InnoDB
是一種通用儲存引擎,可平衡高可靠性與高效能。在 MySQL 9.0 中,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
增強功能與新功能的相關資訊,請參閱
第 1.4 節「MySQL 9.0 的新功能」中的
InnoDB
增強功能清單。發行說明。
其他 InnoDB 資訊與資源
關於與
InnoDB
相關的術語和定義,請參閱MySQL 詞彙表。如需專門討論
InnoDB
儲存引擎的論壇,請參閱MySQL 論壇 :: InnoDB。InnoDB
以與 MySQL 相同的 GNU GPL 授權版本 2(1991 年 6 月)發布。 有關 MySQL 授權的更多資訊,請參閱https://mysql.dev.org.tw/company/legal/licensing/。