其他儲存引擎支援的許多功能,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
)。如需更多資訊,請參閱第 25.7 節,「NDB Cluster 複寫」。使用全域交易識別碼 (GTID) 的複寫與 NDB Cluster 不相容,且在 NDB Cluster 9.0 中不支援。使用
NDB
儲存引擎時,請勿啟用 GTID,因為這極有可能會造成問題,甚至導致 NDB Cluster 複寫失敗。NDB Cluster 不支援半同步複寫。
產生的欄位。
NDB
儲存引擎不支援虛擬產生的欄位上的索引。如同其他儲存引擎,您可以在儲存的產生的欄位上建立索引,但您應該記住,
NDB
除了使用IndexMemory
來儲存索引外,還使用DataMemory
來儲存產生的欄位。如需範例,請參閱NDB Cluster 中的 JSON 欄位與間接索引。NDB Cluster 會將儲存的產生的欄位中的變更寫入二進位日誌,但不會記錄對虛擬欄位所做的變更。這不應影響 NDB Cluster 複寫或
NDB
與其他 MySQL 儲存引擎之間的複寫。
如需有關 NDB
中交易處理限制的更多資訊,請參閱第 25.2.7.3 節,「NDB Cluster 中與交易處理相關的限制」。