【鋭利団体】PK-Brothers鋭利団体PK-Brothers丸くならない。我々のHOME我々について我々へのお問い合わせ【MySQL】パーティションでテーブル分割して大量データ等の検索速度改善http://pk-brothers.com/595/【MySQL】パーティションでテーブル分割して大量データ等の検索速度改善2012年08月30日(木)今回はMySQLのテーブル分割機能である、パーティショニングについて実際にやってみたので紹介します。MySQLの5.1ぐらいからパーティショニングが使えるようなったらしいです。パーティションを区切ると、対象のカラムのデータで物理的にテーブルを分割する事と同等の効果を発揮します。これで、大量データも気軽に扱えるようになりそうです。操作ログと共に説明したいと思います。対象カラムがプライマリーキーとなっていることが必要です。date/datetimeカラムをプライマリーキーに設定する必要がありそうです。そのフラグをプライマリーキーに含める必要がありそうです。今回はフラグでパーティションを区切る方法を試してみました。対象のテーブルを作成します。(`id`,`type_code`),)idとtype_codeをプライマリーキーにします。これでパーティションを作成できます。データはあらかじめ、1000000件登録しておきました。次に先ほど作成したテーブルをパーティションで区切ります。今回、type_codeには固定値で(1,2,3,4,5)という値がそれぞれ入ると想定しています。MAXVALUE);これでtype_codeの値に対してパーティションを区切る事が出来ました。(1)これはtype_codeが1未満のデータが蓄積されるパーティションです。type_codeが0の場合にこのパーティションに蓄積されます。MAXVALUEこちらは例外的なものですね。今回で言えば、0~5以外のデータが入ってきた場合にこのパーティションに蓄積されます。続いて既存データ構造の確認をします。既存データのチェックをしましょう。各type_codeの各データ件数確認。このtype_codeの5を削除します!このような場合、パーティションを分割していれば楽にできます。前述した、ibdataの増幅を抑える事もできます。sec)※対象のパーティションのデータは完全に削除されます。各type_codeのデータ件数確認。すべて削除されている事を確認します。完全に対象のパーティションのデータのみが削除されている事が確認できます。再度パーティション構成を確認。+------------------+------------------------+----------------+----------------------------+------------+きちんと削除されています。このデータは復元できないので、注意してください。ちなみに、その他の制御も一通りやったので参考までに。追加されているか確認。データを1件INSERTして再度配置されているか確認。PK-Brothers.。