데이터 양이 급격히 증가하면 모든 사람은 데이터 읽기 및 쓰기 속도를 최적화하기 위해 데이터베이스 테이블 해싱 및 기타 방법을 선택하게 됩니다. 저자는 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을 통해 데이터가 저장된 테이블 이름을 알아냅니다.
마지막으로 병합 스토리지 엔진을 사용하여 완전한 코드 테이블을 구현합니다
1 CREATE TABLE IF NOT EXISTS `code` ( 2 `full_code` char(10) NOT NULL,3 `create_time` int(10) unsigned NOT NULL,4 INDEX(full_code) 5 ) TYPE=MERGE UNION=(code_0,code_1,code_2.......) INSERT_METHOD=LAST ;
이런 방식으로 코드에서 *를 선택하면 모든 full_code 데이터를 얻을 수 있습니다.
위 내용은 1억 개의 데이터를 가지고 100개의 MySQL 데이터베이스 테이블을 PHP로 구현한 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.kr)를 참고해주세요. .php.cn) !