다음은 100개의 테이블을 생성하여 1억 개의 데이터에 대한 테이블 분할 과정을 보여줍니다. 자세한 내용은 아래 코드를 참조하세요.
데이터 양이 급격히 증가하면 누구나 데이터 읽기 및 쓰기 속도를 최적화하기 위해 라이브러리 테이블 해싱과 같은 방법을 선택하게 됩니다. 저자는 1억 개의 데이터를 100개의 테이블로 나누어 간단한 시도를 했습니다. 구체적인 구현 과정은 다음과 같습니다.
먼저 100개의 테이블을 만듭니다.
$i=0; while($i<=99){ echo "$newNumber \r\n"; $sql="CREATE TABLE `code_".$i."` ( `full_code` char(10) NOT NULL, `create_time` int(10) unsigned NOT NULL, PRIMARY KEY (`full_code`), ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; mysql_query($sql); $i++;
테이블 분할 규칙에 대해 이야기하겠습니다. full_code가 기본 키로 사용됩니다.
기능은 다음과 같습니다.
$table_name=get_hash_table('code',$full_code); function get_hash_table($table,$code,$s=100){ $hash = sprintf("%u", crc32($code)); echo $hash; $hash1 = intval(fmod($hash, $s)); return $table."_".$hash1; }
데이터를 삽입하기 전에 get_hash_table을 통해 데이터가 저장되어 있는 테이블 이름을 알아보세요.
마지막으로 병합 스토리지 엔진을 사용하여 완전한 코드 테이블을 구현합니다
CREATE TABLE IF NOT EXISTS `code` ( `full_code` char(10) NOT NULL, `create_time` int(10) unsigned NOT NULL, INDEX(full_code) ) TYPE=MERGE UNION=(code_0,code_1,code_2.......) INSERT_METHOD=LAST ;
이런 식으로 코드에서 * 선택을 통해 모든 full_code 데이터를 얻을 수 있습니다.
위 소개는 이 글의 전체 내용이므로 모든 분들께 도움이 되었으면 좋겠습니다.