次の制限は、テーブルのユーザー定義パーティショニングでストレージエンジンを使用する際に適用されます。
MERGE ストレージエンジン
ユーザー定義パーティショニングと MERGE
ストレージエンジンは互換性を持ちません。MERGE
ストレージエンジンを使用するテーブルはパーティション化できません。パーティション化されたテーブルはマージできません。
FEDERATED ストレージエンジン
FEDERATED
テーブルのパーティショニングはサポートされません。パーティション化された FEDERATED
テーブルを作成することはできません。
CSV ストレージエンジン
CSV
ストレージエンジンを使用するパーティション化されたテーブルはサポートされません。パーティション化された CSV
テーブルを作成することはできません。
InnoDB ストレージエンジン
InnoDB
外部キーと MySQL パーティショニングは互換性を持ちません。パーティション化された InnoDB
テーブルは、外部キー参照を持つことができず、外部キーによって参照されるカラムを持つこともできません。外部キーを持っていたり、外部キーによって参照されたりする InnoDB
テーブルはパーティション化できません。
また、ALTER TABLE ... OPTIMIZE PARTITION
は、InnoDB
ストレージエンジンを使用するパーティション化されたテーブルで正しく動作しません。そのようなテーブルの場合は、代わりに ALTER TABLE ... REBUILD PARTITION
および ALTER TABLE ... ANALYZE PARTITION
を使用してください。詳細は、セクション13.1.7.1「ALTER TABLE パーティション操作」を参照してください。
NDB ストレージエンジン (MySQL Cluster)
KEY
(LINEAR KEY
を含む) によるパーティショニングは、NDB
ストレージエンジンでサポートされる唯一のパーティショニングタイプです。MySQL Cluster NDB 7.3 では、[LINEAR
] KEY
以外のパーティショニングタイプを使用して MySQL Cluster テーブルを作成することはできず、それを試みるとエラーで失敗します。
また、NDB
テーブルに定義できる最大パーティション数は、クラスター内のデータノードとノードグループの数、使用している MySQL Cluster ソフトウェアのバージョン、およびその他の要因に依存します。詳細は、NDB とユーザー定義のパーティション化を参照してください。
ユーザーパーティション化された NDB
テーブルが次の 2 つの要件のいずれかまたは両方を満たさなくなる CREATE TABLE
ステートメントおよび ALTER TABLE
ステートメントは許可されず、エラーで失敗します。
テーブルに明示的な主キーが存在する必要があります。
テーブルのパーティショニング式に指定されたすべてのカラムが主キーの一部である必要があります。
例外
ユーザーパーティション化された NDB
テーブルが空のカラムリストを使用して (つまり、PARTITION BY KEY()
または PARTITION BY LINEAR KEY()
を使用して) 作成された場合、明示的な主キーは必要ありません。
パーティション化されたテーブルをアップグレードする
アップグレードを実行するときに、KEY
によってパーティション化され、NDB
以外のストレージエンジンを使用するテーブルは、ダンプしてリロードする必要があります。
すべてのパーティションに同じストレージエンジン パーティション化されたテーブルのすべてのパーティションは、同じストレージエンジンを使用する必要があり、それがテーブルが全体として使用する同じストレージエンジンである必要があります。また、テーブルレベルでエンジンを指定しない場合は、パーティション化されたテーブルを作成または変更するときに次のいずれかを行う必要があります。
任意のパーティションまたはサブパーティションにエンジンを指定しない
すべてのパーティションまたはサブパーティションにエンジンを指定する