データ量が急激に増加すると、誰もがデータの読み取りと書き込みの速度を最適化するためにデータベース テーブルのハッシュやその他の方法を選択します。著者は、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データを挿入する前に 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 中国語 Web サイト (www.php.cn) に注目してください。