00 首页

MySQL 架构图解

MySQL Server 层处理连接、SQL 与事务协调,InnoDB 负责索引、页缓存、事务与恢复。理解一次读写时,先区分内存数据页、恢复日志与复制日志,避免把 COMMIT 误解为立即刷完所有数据页。
版本:MySQL Community Server 26.10.0(InnoDB);核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。

从边界到模块

specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { client = actor '应用客户端' replica = system '复制副本' app = system 'MySQL 实例' { sql = component '连接 / 解析 / 优化 / 执行' engine = component 'InnoDB 事务与索引' pool = storage 'Buffer Pool' redo = storage 'redo / undo' files = storage '表空间' binlog = storage 'Server binlog' } client -> app.sql 'SQL / 结果' app.sql -> app.engine '存储引擎接口' app.engine -> app.pool '访问缓存页' app.engine -> app.redo '生成恢复与回滚信息' app.pool -> app.files '读页与后台刷脏' app.sql -> app.binlog '事务提交协调' app.binlog -> replica '事件复制' } views { view index { title '01 · 系统边界' include client, replica, app autoLayout LeftRight } view modules of app { title '02 · 模块与数据流' include app.*, client, replica autoLayout LeftRight } }

阅读方法

先看“系统边界”,再切换“模块与数据流”或从系统节点进入下钻视图。箭头表示交互或数据流,不代表全部为同步调用;每条核心链路页提供独立可读的时序图。可在图中缩放、平移和切换视图。

四条核心链路

  • 一条 SQL 的执行:一条主键 SELECT 从 Server 层进入 InnoDB:先得到执行计划,再通过引擎接口读取索引记录与可见版本。
  • 事务与 redo、undo 日志:undo 支持回滚和旧版本读取,redo 支持崩溃后重做;启用 binlog 时,Server 与 InnoDB 还要协调提交。
  • Buffer Pool:Buffer Pool 缓存数据页与索引页;读未命中才从表空间加载,脏页后台刷出前必须满足 WAL。
  • binlog 主从复制:源端提交产生 binlog 事件,副本接收成 relay log,再由 applier 回放;接收进度与执行进度是两种状态。

官方资料