MySQL 存儲引擎架構解析:Server 層與 Engine 層分工、插件式設計
MySQL 架構分為兩層:Server 層(連接池、SQL 介面、解析器、優化器、快取)負責與客戶端交互、語句解析優化;Storage Engine 層(InnoDB、MyISAM、Memory 等)負責實際數據存取、索引維護、鎖控制、事務管理。插件式設計讓引擎可熱插拔。
Server 層核心組件
- Connection Pool:管理客戶端連接、認證、線程複用。
- SQL Interface:接收 SQL、返回結果集。
- Parser:詞法/語法分析 → AST(抽象語法樹)。
- Optimizer:基於成本模型選擇執行計劃(索引選擇、Join 順序、常數折疊等)。
- Cache & Buffer:Query Cache(8.0 移除)、Table Open Cache、Key Buffer(MyISAM)、InnoDB Buffer Pool(由引擎自管)。
Engine 層職責
- 數據文件組織(.ibd、.MYD/.MYI)
- 索引結構(B+Tree、Hash、Fulltext、Spatial)
- 並發控制(行鎖/表鎖、MVCC、死鎖檢測)
- 事務管理(Redo/Undo Log、兩階段提交、隔離級別)
- 崩潰恢復(Checkpoint、Doublewrite Buffer)
插件式優勢
INSTALL PLUGIN / UNINSTALL PLUGIN 動態加載卸載。
- 同一 Server 支援多引擎共存,建表時
ENGINE=InnoDB 指定。
- 第三方可開發專用引擎(如 TokuDB、RocksDB、Spider)。
圖示架構
