====== パーティショニング ======
===== テーブル作成時の注意点 =====
- パーティショニングのキーにしたいカラムは、プライマリキーに含まれている必要がある
- パーティションの操作はロックが掛かるので、メンテナンス中に行う
===== パーティションの作成 =====
月別に別ける場合
ALTER TABLE テーブル名 PARTITION BY RANGE COLUMNS(created_at) (
PARTITION p201610 VALUES LESS THAN ('2016-11-01 00:00:00') COMMENT='2016-10',
PARTITION p201611 VALUES LESS THAN ('2016-12-01 00:00:00') COMMENT='2016-11',
:
:
PARTITION p201912 VALUES LESS THAN ('2020-01-01 00:00:00') COMMENT='2019-12',
PARTITION pmax VALUES LESS THAN MAXVALUE
)
===== パーティションの振り分けを確認 =====
SELECT TABLE_SCHEMA,PARTITION_NAME,PARTITION_ORDINAL_POSITION,TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME="テーブル名"
===== どのパーティションが使われているか =====
SQL コマンドの前に "EXPLAIN PARTITIONS" を付ける。
EXPLAIN PARTITIONS
SELECT *
FROM テーブル名
WHERE created_at >= "2016-10-01 00:00:00" && created_at < "2016-12-01 00:00:00"
===== パーティションの削除(中のデータも消える) =====
ALTER TABLE テーブル名 DROP PARTITION パーティション名