MySQL 8.4 版本注意事項
使用分散式、無共享架構實作 NDB 儲存引擎,這會使其在許多方面與 InnoDB 的行為有所不同。對於那些不習慣使用 NDB 的人來說,由於其在交易、外鍵、表格限制和其他特性方面的分散式本質,可能會產生意料之外的行為。這些顯示在下表中
表 25.1 InnoDB 和 NDB 儲存引擎之間的差異
| 功能 | InnoDB (MySQL 8.4) |
NDB 8.4 |
|---|---|---|
| MySQL 伺服器版本 | 8.4 | 8.4 |
InnoDB 版本 |
InnoDB 8.4.0 |
InnoDB 8.4.0 |
| NDB 叢集版本 | 不適用 | NDB
8.4.0/8.4.0 |
| 儲存限制 | 64TB | 128TB |
| 外鍵 | 是 | 是 |
| 交易 | 所有標準類型 | READ COMMITTED |
| MVCC | 是 | 否 |
| 資料壓縮 | 是 | 否 (可以壓縮 NDB 檢查點和備份檔案) |
| 大型資料列支援 ( > 14K) | 支援 VARBINARY、VARCHAR、BLOB 和 TEXT 資料行 |
僅支援 BLOB 和 TEXT 資料行 (使用這些類型儲存非常大量的資料可能會降低 NDB 效能) |
| 複寫支援 | 使用 MySQL 複寫的非同步和半同步複寫;MySQL 群組複寫 | NDB 叢集內的自動同步複寫;使用 MySQL 複寫在 NDB 叢集之間進行非同步複寫 (不支援半同步複寫) |
| 讀取操作的橫向擴充 | 是 (MySQL 複寫) | 是 (NDB 叢集中的自動分割;NDB 叢集複寫) |
| 寫入操作的橫向擴充 | 需要應用程式層級分割 (分片) | 是 (NDB 叢集中的自動分割對應用程式是透明的) |
| 高可用性 (HA) | 內建,來自 InnoDB 叢集 | 是 (設計為 99.999% 的正常執行時間) |
| 節點故障恢復和容錯移轉 | 來自 MySQL 群組複寫 | 自動 (NDB 架構中的關鍵元素) |
| 節點故障恢復時間 | 30 秒或更長 | 通常 < 1 秒 |
| 即時效能 | 否 | 是 |
| 記憶體內表格 | 否 | 是 (某些資料可選擇性地儲存在磁碟上;記憶體內和磁碟資料儲存都是持久的) |
| 對儲存引擎的 NoSQL 存取 | 是 | 是 (多個 API,包括 Memcached、Node.js/JavaScript、Java、JPA、C++ 和 HTTP/REST) |
| 並行和平行寫入 | 是 | 最多 48 個寫入器,針對並行寫入進行最佳化 |
| 衝突偵測和解決 (多個來源) | 是 (MySQL 群組複寫) | 是 |
| 雜湊索引 | 否 | 是 |
| 線上新增節點 | 使用 MySQL 群組複寫讀取/寫入複本 | 是 (所有節點類型) |
| 線上升級 | 是 (使用複寫) | 是 |
| 線上綱要修改 | 是,作為 MySQL 8.4 的一部分 | 是 |