NDB
テーブルでは、ほかのストレージエンジンでサポートされるいくつかの機能がサポートされません。 NDB Cluster でこれらの機能のいずれかを使用しようとしても、それ自体のエラーは発生しません。ただし、機能がサポートまたは適用されることが予想されるアプリケーションでは、エラーが発生する可能性があります。 このような機能を参照するステートメントは、NDB
によって事実上無視される場合でも、構文上有効である必要があります。
-
インデックスのプリフィクス. インデックスの接頭辞は、
NDB
テーブルではサポートされません。 接頭辞がCREATE TABLE
、ALTER TABLE
、CREATE INDEX
などのステートメントのインデックス指定の一部として使用されている場合、その接頭辞はNDB
によって作成されません。インデックス接頭辞を含むステートメント、および
NDB
テーブルの作成または変更は、構文的に有効である必要があります。 たとえば、次のステートメントは、ストレージエンジンに関係なく、常にエラー 1089 「接頭辞キーが正しくありません。使用されているキー部分が文字列でないか、使用されている長さがキー部分より長いか、ストレージエンジンが一意の接頭辞キーをサポートしていません」で失敗します:CREATE TABLE t1 ( c1 INT NOT NULL, c2 VARCHAR(100), INDEX i1 (c2(500)) );
これは、インデックスにそれ自体より大きい接頭辞がない可能性があるという SQL 構文ルールを考慮して発生します。
セーブポイントとロールバック. セーブポイントおよびセーブポイントへのロールバックは、
MyISAM
と同様に無視されます。コミットの持続性. ディスクに対する永続的なコミットはありません。 コミットはレプリケートされますが、コミット時にログがディスクにフラッシュされる保証はありません。
-
レプリケーション. ステートメントベースのレプリケーションはサポートされません。 クラスタのレプリケーションを設定するときは、
--binlog-format=ROW
(または--binlog-format=MIXED
) を使用してください。 詳細は、セクション23.6「NDB Cluster レプリケーション」を参照してください。グローバルトランザクション識別子 (GTID) を使用したレプリケーションは NDB Cluster と互換性がなく、NDB Cluster 8.0 ではサポートされません。 NDB Cluster レプリケーションの失敗までの問題を引き起こす可能性が非常に高いため、
NDB
ストレージエンジンを使用するときに GTID を有効にしないでください。準同期レプリケーションは NDB Cluster ではサポートされていません。
-
生成されるカラム.
NDB
ストレージエンジンは、仮想生成カラムのインデックスをサポートしていません。他のストレージエンジンと同様に、格納された生成カラムにインデックスを作成できますが、
NDB
では、生成されたカラムの格納にDataMemory
が使用され、インデックスにIndexMemory
が使用されることに注意する必要があります。 例については、NDB Cluster での JSON カラムと間接インデックスを参照してください。NDB Cluster は、格納された生成カラム内の変更をバイナリログに書き込みますが、仮想カラムに対して行われた変更はログに記録しません。 これは、NDB Cluster レプリケーションまたは
NDB
とほかの MySQL ストレージエンジン間のレプリケーションには影響しません。
NDB
でのトランザクション処理に関する制限の詳細は、セクション23.1.7.3「NDB Cluster でのトランザクション処理に関する制限」を参照してください。