概要
指定したカラムの内容に応じて、データを分割格納してくれる機能。
MySQL側が勝手に物理領域を分けて格納してくれるため、SELECTなどでの操作方法は変わらない。
大量データを扱う際の高速化には効果大。
※MySQL(に限らず)では、何もしないと格納データ量の増加に伴い、
検索時間が飛躍的に増加してしまうが、この機能によりそれを抑えることが可能。
例として、単純な主キーでの検索時間が
格納件数:約 100万件(パーテイショニングなし)→0.01秒未満
格納件数:約1000万件(パーテイショニングなし)→2.00秒以上
格納件数:約1000万件(パーテイショニングあり)→0.01秒未満
などの違いになることも。(環境・設定にも大きく左右されるのであくまで一例)
使用注意点
MySQLが5.1以降であること。
分割したい項目が主キーに含まれていること。
分割方法
名称 |
説明 |
RANGE |
カラム値の範囲毎に分割して格納 |
LIST |
カラム値毎(1,3,5などの組み合せも可)に分割して格納 |
HASH |
カラム値を評価式(デフォルトはMOD)の結果毎に分割して格納 |
KEY |
カラム値の評価式(PASSWORDなど)の結果毎に分割して格納。カラムが文字列でもOK |
※上記の他にLINER HASH, LINER KEYがあり。(使用評価式が大規模分割向きのもの)
設定方法
テーブル作成時、作成後のテーブル変更どちらでも可。
個々の詳細はマニュアル、ヘルプ等を参照のこと。
以下はHASHを使用する際の作成例。
CREATE TABLE t_rate (
id INT NOT NULL,
currency_id INT NOT NULL,
date_time BIGINT,
rate DECIMAL(12, 8),
PRIMARY KEY (id, currency_id)
) ENGINE=InnoDB PARTITION BY HASH (currency_id) PARTITIONS 10;
これで、内部的にcurrency_idの値毎に分割される。
操作は全てt_rateに対して行えばOK。
最終更新:2012年05月13日 10:46