MySQLパーティショニング
勘違いしておりました。テーブル名の末尾に _1
とかつけるテーブル分割がパーティショニングだと思っておりました。。。
それはどちらかと言うとシャーディング(水平分割)ですね
実際には、SQL(ALTER文)だけで実行可能な機能でした。
有効なケース
- カーディナリティが低いカラムを使って検索する場合
制約
- テーブルのユニークなキーを含めていなければいけない
ログテーブルにも有効
DELETE
はくっそ重いがパーティショニングしておけばDROP
できる
ログ系のテーブルでは基本は新しくinsertされた行への参照がほとんどになる様に設計すべきです。何よりもこれが大事。ログ系のテーブルは放っておけばどんどんサイズが大きくなります。アクセスされるデータの量が昔のものまで満遍なく存在していると、buffer poolというメモリキャッシュに載せるべきデータが時間と共にどんどん増えていき、すぐにメモリから溢れてIOが発生します。IOは怖いです。