InnoDB 是一個通用儲存引擎,可平衡高可靠性和高效能。在 MySQL 8.4 中,InnoDB 是預設的 MySQL 儲存引擎。除非您已設定不同的預設儲存引擎,否則發出不含 ENGINE 子句的 CREATE TABLE 語句會建立 InnoDB 資料表。
InnoDB 的主要優點
其 DML 操作遵循 ACID 模型,交易具有提交、回滾和損毀復原功能,以保護使用者資料。請參閱 第 17.2 節,「InnoDB 和 ACID 模型」。
列層級鎖定和 Oracle 風格的一致性讀取可提高多使用者並行處理和效能。請參閱 第 17.7 節,「InnoDB 鎖定和交易模型」。
InnoDB資料表會在磁碟上排列您的資料,以根據主索引鍵最佳化查詢。每個InnoDB資料表都有一個稱為叢集索引的主索引鍵索引,用於組織資料以最小化主索引鍵查詢的 I/O。請參閱 第 17.6.2.1 節,「叢集索引和次要索引」。為了維護資料完整性,
InnoDB支援FOREIGN KEY限制。使用外部索引鍵,會檢查插入、更新和刪除,以確保它們不會導致相關資料表之間的不一致。請參閱 第 15.1.20.5 節,「FOREIGN KEY 限制」。
表 17.1 InnoDB 儲存引擎功能
| 功能 | 支援 |
|---|---|
| B 樹索引 | 是 |
| 備份/時間點還原 (在伺服器中實作,而非在儲存引擎中。) | 是 |
| 叢集資料庫支援 | 否 |
| 叢集索引 | 是 |
| 壓縮資料 | 是 |
| 資料快取 | 是 |
| 加密資料 | 是 (在伺服器中透過加密函數實作;在 MySQL 5.7 及更新版本中,支援靜態資料加密。) |
| 外部索引鍵支援 | 是 |
| 全文搜尋索引 | 是 (MySQL 5.6 及更新版本提供 FULLTEXT 索引支援。) |
| 地理空間資料類型支援 | 是 |
| 地理空間索引支援 | 是 (MySQL 5.7 及更新版本提供地理空間索引支援。) |
| 雜湊索引 | 否 (InnoDB 在內部將雜湊索引用於其自適性雜湊索引功能。) |
| 索引快取 | 是 |
| 鎖定粒度 | 列 |
| MVCC | 是 |
| 複寫支援 (在伺服器中實作,而非在儲存引擎中。) | 是 |
| 儲存限制 | 64TB |
| T 樹索引 | 否 |
| 交易 | 是 |
| 更新資料字典的統計資訊 | 是 |
若要比較 InnoDB 與 MySQL 提供的其他儲存引擎的功能,請參閱儲存引擎功能資料表,位於 第 18 章,替代儲存引擎。
InnoDB 增強功能和新功能
如需 InnoDB 增強功能和新功能的資訊,請參閱
InnoDB增強功能清單,位於 第 1.4 節,「MySQL 8.4 相較於 MySQL 8.0 的新功能」。發行說明。
其他 InnoDB 資訊和資源
如需
InnoDB相關的詞彙和定義,請參閱 MySQL 詞彙表。如需關於
InnoDB儲存引擎的專屬論壇,請參閱MySQL 論壇::InnoDB。InnoDB與 MySQL 一樣,皆以 GNU GPL 授權條款第二版(1991 年 6 月)發布。如需更多關於 MySQL 授權的資訊,請參閱https://mysql.com.tw/company/legal/licensing/。