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 回放;接收进度与执行进度是两种状态。