記錄 InnoDB 存儲引擎內部宏觀架構,基於源碼目錄結構與關鍵類梳理,適合內核研發人員快速建立心智模型。
MySQL Handler API / Embedded API
│
▼
Row / Cursor 接口層
│
▼
B+Tree Index / Insert Buffer 索引與變更緩衝
│
▼
Manager 層(核心業務邏輯)
├── Transaction Manager 事務(ACID、MVCC、Undo Log)
├── Lock Manager 鎖(行鎖、表鎖、死鎖檢測)
├── Buffer Manager 緩存池(LRU、Flush、Change Buffer)
├── Log Manager Redo Log(WAL、Checkpoint、Group Commit)
├── Storage Manager 表空間、段、區、頁管理
└── Resource Manager 內存分配、線程同步、配置參數
│
▼
基礎設施層
├── File Manager 文件讀寫、AIO、雙寫缓冲
├── Concurrency Manager Mutex、RW-Latch、Spin Lock
└── Common Utility 基礎數據結構(Hash、List、Vector、Radix Tree)
storage/innobase/handler/:Handler API 實現(ha_innodb.cc)。storage/innobase/btr/:B+Tree 索引操作(btr0btr.cc、btr0cur.cc 游標)。storage/innobase/trx/:事務系統(trx0trx.cc、trx0undo.cc、trx0purge.cc)。storage/innobase/lock/:鎖系統(lock0lock.cc)。storage/innobase/buf/:緩存池(buf0buf.cc、buf0flu.cc、buf0lru.cc)。storage/innobase/log/:Redo Log(log0log.cc、log0recv.cc 恢復)。storage/innobase/fil/:文件管理(fil0fil.cc)。storage/innobase/sync/:並發控制(sync0sync.cc、sync0rw.cc)。storage/innobase/include/:核心結構體定義(trx0types.h、btr0types.h、buf0types.h)。UNIV_INLINE(univ.i):跨平台 inline 關鍵字封裝。trx_t(事務)、lock_t(鎖)、buf_block_t(緩存頁)、btr_cur_t(B+Tree 游標)、log_t(日志系統)。ha_innodb::write_row 入手,追蹤一條 INSERT 的完整路徑:Handler → Row → B+Tree → Buffer → Log → File。trx0trx.cc 理解事務狀態機、Undo Log 分配、MVCC 視圖構建。buf0lru.cc LRU 列表管理、buf0flu.cc Flush 策略(Checkpoint、脏頁刷新)。gdb 或 Visual Studio 調試斷點驗證理解。