MySQL 8.0 では、パーティショニングサポートは実際には MySQL Server によって提供されるのではなく、テーブルストレージエンジンの所有するパーティショニングハンドラまたはネイティブパーティショニングハンドラによって提供されます。 MySQL 8.0 では、InnoDB
ストレージエンジンのみがネイティブのパーティショニングハンドラを提供します。 つまり、パーティション化されたテーブルは、ほかのストレージエンジンを使用して作成できません。
MySQL Cluster NDB
ストレージエンジンは、ネイティブパーティショニングサポートも提供しますが、MySQL 8.0 では現在サポートされていません。
ALTER TABLE ... OPTIMIZE PARTITION
は、InnoDB
を使用するパーティションテーブルでは正しく機能しません。 そのようなテーブルの場合は、代わりに ALTER TABLE ... REBUILD PARTITION
および ALTER TABLE ... ANALYZE PARTITION
を使用してください。 詳細は、セクション13.1.9.1「ALTER TABLE パーティション操作」を参照してください。
ユーザー定義のパーティション分割と NDB ストレージエンジン (NDB Cluster).
KEY
(LINEAR KEY
を含む) によるパーティショニングは、NDB
ストレージエンジンでサポートされる唯一のパーティショニングタイプです。 「NDB Cluster」の通常の状況では、[LINEAR
] KEY
以外のパーティション化タイプを使用して「NDB Cluster」テーブルを作成することはできず、作成しようとするとエラーで失敗します。
例外 (本番用ではない): NDB Cluster SQL ノード上の new
システム変数を ON
に設定することで、この制限をオーバーライドできます。 これを行う場合、[LINEAR] KEY
以外のパーティション化タイプを使用するテーブルは本番でサポートされないことに注意してください。 「このような場合は、KEY
または LINEAR KEY
以外のパーティション化タイプのテーブルを作成して使用できますが、これは完全にリスクがあります」。
NDB
テーブルに定義できるパーティションの最大数は、クラスタ内のデータノードとノードグループの数、使用中の NDB Cluster ソフトウェアのバージョン、およびその他の要因によって異なります。 詳細は、NDB とユーザー定義のパーティション化を参照してください。
NDB
テーブルのパーティションごとに格納できる固定サイズデータの最大量は 128 TB です。 以前は 16 GB でした。
ユーザーパーティション化された NDB
テーブルが次の 2 つの要件のいずれかまたは両方を満たさなくなる CREATE TABLE
ステートメントおよび ALTER TABLE
ステートメントは許可されず、エラーで失敗します。
テーブルに明示的な主キーが存在する必要があります。
テーブルのパーティショニング式に指定されたすべてのカラムが主キーの一部である必要があります。
例外.
ユーザーパーティション化された NDB
テーブルが空のカラムリストを使用して (つまり、PARTITION BY KEY()
または PARTITION BY LINEAR KEY()
を使用して) 作成された場合、明示的な主キーは必要ありません。
パーティション化されたテーブルをアップグレードする.
アップグレードを実行する場合は、KEY
によってパーティション化されたテーブルをダンプしてリロードする必要があります。 InnoDB
以外のストレージエンジンを使用するパーティション化されたテーブルは、MySQL 5.7 以前から MySQL 8.0 以降にアップグレードできません。ALTER TABLE ... REMOVE PARTITIONING
を使用してこのようなテーブルからパーティション化を削除するか、アップグレード前に ALTER TABLE ... ENGINE=INNODB
を使用して InnoDB
に変換する必要があります。
MyISAM
テーブルの InnoDB
への変換の詳細は、セクション15.6.1.5「MyISAM から InnoDB へのテーブルの変換」 を参照してください。