#既存のテーブルにパーティションを作成 ALTER TABLE table_name PARTITION BY RANGE (id) ( PARTITION 1000000_table_name VALUES LESS THAN (1000000), PARTITION 2000000_table_name VALUES LESS THAN (2000000), … PARTITION p_max_table_name VALUES LESS THAN MAXVALUE ) #最大値をLESS THAN MAXVALUEで指定しているが、可能であれば余裕をもってパーティションを定義しておき、足りなくなりそうだったら追加していく方が良い。 #パーティショニングテーブルの追加 ALTER TABLE table_name ADD PARTITION ( PARTITION p50_table_name VVALUES LESS THAN (50)); #パーティショニング状態の確認 SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='table_name'; #パーティショニングの解除 ALTER TABLE table_name REMOVE PARTITIONING; #パーティショニングテーブルの削除(データが削除されます) ALTER TABLE table_name ADD PARTITION ( PARTITION p_max_table_name VALUES LESS THAN MAXVALUES);
ちなみに、テーブル数を増やしすぎるとmysqldの扱えるファイルディスクリプタ数(一度に開けるファイル数=テーブル数)が足りなくなってしまうことがあります。
/etc/my.cnf に以下のようにopen_files_limitを設定しましょう。
数値は、使っているテーブル数とサーバーの搭載メモリで決定することになります。
[mysqld_safe]
open_files_limit = 8192