- MySQL関連のWikiへのリンク
- MySQL
- MySQL 5.1
- MySQL 5.4
- MySQL/InnoDB
- MySQL/エラー
- MySQL/クラスタリング
- MySQL/サーバ移動
- MySQL/チューニング
- MySQL/バージョン
- MySQL/バックアップ
- MySQL/プロファイリング
- MySQL/ベンチマーク
- MySQL/レプリケーション
- MySQL/ロック
- MySQL/制限
5.0からのアップグレード †
InnoDBの性能向上 †
パーティショニング機能 †
概要 †
- パーティショニングとは、1つのテーブルを列値や行値の条件で論理的に区分けして管理することだ。つまり、データ全体ではなく、細かくパーティショニングされたテーブルを対象にクエリを実行するため応答速度が速い。
- MySQL 5.1では、カラム値によってテーブルを行単位で区分けする「水平パーティショニング」のみに対応。Range/List/Hash/Keyという4つの関数タイプで区分けできる。
- パーティショニングは以下の4種類
- RANGEパーティショニング ... カラムの値の範囲をパーティションごとに設定するものです。
- LISTパーティショニング ... パーティションに振り分けられるべき値を直接指定(リストアップ)するものです。
- HASHパーティショニング ... 整数値のカラムに対してMOD()関数(割り算の余り)によりパーティションの振り分けを行うものです。
- KEYパーティショニング ... 文字列のカラムに対してPASSWORD()関数により算出されるハッシュ値を用いる。
- パーティショニングには以下の制約がある
- 全てのパーティションで同じストレージエンジンを使用する必要あり
- 外部キーが使用できない
- 実際にパーティションがうまく使われているかどうかを確認するには、EXPLAIN PARTITIONSコマンドを利用(例:mysql> EXPLAIN PARTITIONS SELECT ...(略)...;)
- partitions の欄に処理で使用したパーティションが表示される
- 1テーブル当たりの最大分割数は1024
- 分割したテーブルをさらに分割するサブパーティションの機能もあり
注意点 †
「パーティションの区切りの基準になるカラムはプライマリキーで指定しているもの」という制約があるので、必要であればプライマリキーを変更する。
ALTER TABLE entries DROP PRIMARY KEY, ADD PRIMARY KEY ([従来指定カラム1],[従来指定カラム2], ... ,[パーティショニングに使いたいカラム]);
日付でパーティショニング †
CREATE TABLE members (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY KEY(joined) ... 分割キーはカラムjoinedの値
PARTITIONS 6; ... 6つに分割
イベントスケジューラ †
MySQL Cluster †