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.dev.org.tw/company/legal/licensing/。