InnoDB 是 MySQL 預設且最重要的事務型存儲引擎。其設計目標是高併發、高可靠、高效能。本文系統梳理 InnoDB 核心架構:MVCC 多版本並發控制、四大隔離級別實現、聚簇索引組織、自適應哈希索引、插入緩衝區及熱備份支援。
SELECT(非鎖定)為一致性讀,讀快照;SELECT ... LOCK IN SHARE MODE、SELECT ... FOR UPDATE、UPDATE、DELETE 為當前讀,讀最新版本並加鎖。InnoDB 監控索引頁訪問模式,若發現某熱點頁符合哈希查找條件,自動在內存中建立哈希索引,將 B+ 樹 O(log N) 查找降為 O(1)。無需人工干預,適用於高頻點查詢場景。
針對非唯一二級索引的插入操作:若索引頁不在內存,不直接讀盤寫入,而是記錄在 Insert Buffer(內存 + 磁盤系統表空間),後台合併寫入。大幅減少隨機 I/O,提升批量插入性能。唯一索引不可用(需即時判斷唯一性)。
InnoDB 鎖模型極其精細:行鎖、間隙鎖、臨鍵鎖、插入意向鎖、自增鎖等。配合 MVCC 版本鏈、Purge 線程、死鎖檢測,構成龐大系統。官方手冊「InnoDB 事務模型和鎖」章節是必讀參考。
InnoDB 基於Redo Log (WAL)、Doublewrite Buffer、表空間獨立架構,配合 xtrabackup、MySQL Enterprise Backup 等工具,可實現非阻塞、一致性、增量的物理熱備份。MyISAM 等非事務引擎需全局鎖表甚至停寫才能備份。
InnoDB 以聚簇索引為核心,MVCC 解決讀寫衝突,多層次優化機制應對不同負載,完整事務與熱備份能力保障數據安全。深入理解其內部運作,是高效使用 MySQL、排查疑難性能問題的前提。