まとめ
1つのテーブルを分割して管理できる機能(MySQL 5.1〜)をパーティショニングという。
パーティショニング機能によって分割されたテーブルの単位をパーティションという。
パーティショニングを使うメリット
- パーティション単位でのDROP, CREATEが容易になる
- パーティションを絞ったSQLクエリを発行することで検索が高速化できる
MySQLでは、過去バージョン〜現行バージョン(8.0系 ※2022/05/12時点)まで、レコード単位で分割する「水平パーティション」のみ対応している。
分割パターンとしては以下が利用できる。
パターン | 概要 |
---|---|
RANGE | 各レコードの1カラム値の「範囲(0〜5, 6〜10,…みたいな形)」で分割 |
LIST | 各レコードの1カラム値の「リスト ([1,3,4], [2,5,6],...みたいな形)」で分割 |
HASH | 各レコードの1カラム値の「ハッシュ値の計算結果」で均等に分割 (分割数と対象とするカラムを指定) |
KEY | 各レコードのユニークキーであるカラム値の「ハッシュ値の計算結果」で分割(分割数のみ指定) |
パーティションの設定はCREATE TABLE時に同時に以下のようなSQL文で行うらしい。
CREATE TABLE
...
PARTITION BY <分割パターン>
<分割の詳細設定(分割パターンによる)>
あとからさらにパーティションを追加したい場合は以下。
ALTER TABLE <対象テーブル名> ADD PARTITION (
<分割詳細設定(CREATE TABLE時に設定した分割パターンによる)>
)
作成したパーティションを削除したい(パーティション単位で)場合は以下。
ALTER TABLE <対象テーブル> DROP PARTITION <パーティション追加時に名づけたパーティション名>;
参考