首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 源碼架構筆記(二):InnoDB 存儲引擎核心模塊與管理器分層

     編輯:MySQL 綜合教學

MySQL 源碼架構筆記(二):InnoDB 存儲引擎核心模塊與管理器分層

記錄 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(日志系統)。

學習建議

  1. 從 ha_innodb::write_row 入手,追蹤一條 INSERT 的完整路徑:Handler → Row → B+Tree → Buffer → Log → File。
  2. 閱讀 trx0trx.cc 理解事務狀態機、Undo Log 分配、MVCC 視圖構建。
  3. 關注 buf0lru.cc LRU 列表管理、buf0flu.cc Flush 策略(Checkpoint、脏頁刷新)。
  4. 配合 gdb 或 Visual Studio 調試斷點驗證理解。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved