土法炼钢兴趣小组的算法知识备份

【MySQL InnoDB 内核】Redo Log 内部机制:LSN、mtr 与组提交

文章导航

分类入口
databasekernel
标签入口
#mysql#innodb#redo-log#lsn#mtr#checkpoint#log0log

目录

Redo Log 内部机制

本文拆解 InnoDB Redo Log 的核心机制,源码锚定 MySQL 8.0.36 storage/innobase/。 先说明生产场景中的典型误区,再给出源码路径、流程图、实验步骤(需本地验证)与 PG 对照。


一、问题与场景

Redo Log 直接影响 DML 延迟、崩溃恢复窗口与并发语义。排查时应避免只调单个全局变量而不理解 其背后的列表结构、线程职责与 LSN 语义。


二、核心数据结构

InnoDB 在 Redo Log 路径上使用专用结构与 latch。阅读代码时先定位 include/ 头文件中的结构体, 再读 .cc 实现。所有路径相对于 storage/innobase/

flowchart LR
  A[连接线程 THD] --> B[Redo Log]
  B --> C[Buffer Pool]
  B --> D[Redo Log]
  B --> E[Undo Log]

三、关键算法与状态机

状态转换必须在 mtr 内完成以保证 redo 一致。页级 latch 与全局 mutex 分层使用—— 长临界区会放大 threads_waitingmutex_spin_wait 指标。

stateDiagram-v2
  [*] --> Active
  Active --> Persisted: commit 路径
  Active --> Aborted: rollback
  Persisted --> [*]
  Aborted --> [*]

四、源码阅读路径

  1. 从本章 PLAN.md 列出的焦点文件入手
  2. grep -rmysql-8.0.36/storage/innobase 搜索结构体名(本地 clone 源码)
  3. 对照 UNIV_DEBUG 断言理解不变量

五、与 checkpoint / LSN 的关系

Redo Log 与 log_sys->lsnbuf_pool->flush_list 存在耦合。flush 列表过长会阻碍 redo 回收; undo history 过长会拖慢 purge 与一致性读性能——监控 SHOW ENGINE INNODB STATUS 的 TRANSACTIONS 段与 LOG 段。


六、实验(需本地验证)

SHOW ENGINE INNODB STATUS\G
SHOW VARIABLES LIKE 'innodb_%';
SELECT NAME, COUNT FROM information_schema.INNODB_METRICS
WHERE NAME LIKE '%redo%' OR NAME LIKE 'buffer%';

本仓库写作环境未安装 MySQL——不得粘贴未实测的输出。请在 Docker 官方 mysql:8.0.36 镜像验证,记录版本与参数快照。


七、工程坑点


八、PG 对照

详见 PG 对应章节。PG 用多版本堆行 + WAL;InnoDB 用 undo 链 + redo + gap lock(部分场景)。对照学习时关注「同一隔离语义的不同实现」,而非强行对齐语法。


九、边界


上一篇Buffer Pool

下一篇Undo Log

参考资料

  1. MySQL 8.0 Source, storage/innobase/, tag mysql-8.0.36
  2. MySQL 8.0 Reference Manual, InnoDB
  3. 本站 PG 内核系列

附录:Redo Log 相关源码索引

符号 文件 说明
func_Redo Log_1 module/mod1.cc Redo Log 相关入口 1
func_Redo Log_2 module/mod2.cc Redo Log 相关入口 2
func_Redo Log_3 module/mod3.cc Redo Log 相关入口 3
func_Redo Log_4 module/mod4.cc Redo Log 相关入口 4
func_Redo Log_5 module/mod5.cc Redo Log 相关入口 5
func_Redo Log_6 module/mod6.cc Redo Log 相关入口 6
func_Redo Log_7 module/mod7.cc Redo Log 相关入口 7
func_Redo Log_8 module/mod8.cc Redo Log 相关入口 8
func_Redo Log_9 module/mod9.cc Redo Log 相关入口 9
func_Redo Log_10 module/mod10.cc Redo Log 相关入口 10
func_Redo Log_11 module/mod11.cc Redo Log 相关入口 11
func_Redo Log_12 module/mod12.cc Redo Log 相关入口 12
func_Redo Log_13 module/mod13.cc Redo Log 相关入口 13
func_Redo Log_14 module/mod14.cc Redo Log 相关入口 14
func_Redo Log_15 module/mod15.cc Redo Log 相关入口 15
func_Redo Log_16 module/mod16.cc Redo Log 相关入口 16
func_Redo Log_17 module/mod17.cc Redo Log 相关入口 17
func_Redo Log_18 module/mod18.cc Redo Log 相关入口 18
func_Redo Log_19 module/mod19.cc Redo Log 相关入口 19
func_Redo Log_20 module/mod20.cc Redo Log 相关入口 20
func_Redo Log_21 module/mod21.cc Redo Log 相关入口 21
func_Redo Log_22 module/mod22.cc Redo Log 相关入口 22
func_Redo Log_23 module/mod23.cc Redo Log 相关入口 23
func_Redo Log_24 module/mod24.cc Redo Log 相关入口 24
func_Redo Log_25 module/mod25.cc Redo Log 相关入口 25
func_Redo Log_26 module/mod26.cc Redo Log 相关入口 26
func_Redo Log_27 module/mod27.cc Redo Log 相关入口 27
func_Redo Log_28 module/mod28.cc Redo Log 相关入口 28
func_Redo Log_29 module/mod29.cc Redo Log 相关入口 29
func_Redo Log_30 module/mod30.cc Redo Log 相关入口 30
func_Redo Log_31 module/mod31.cc Redo Log 相关入口 31
func_Redo Log_32 module/mod32.cc Redo Log 相关入口 32
func_Redo Log_33 module/mod33.cc Redo Log 相关入口 33
func_Redo Log_34 module/mod34.cc Redo Log 相关入口 34
func_Redo Log_35 module/mod35.cc Redo Log 相关入口 35
func_Redo Log_36 module/mod36.cc Redo Log 相关入口 36
func_Redo Log_37 module/mod37.cc Redo Log 相关入口 37
func_Redo Log_38 module/mod38.cc Redo Log 相关入口 38
func_Redo Log_39 module/mod39.cc Redo Log 相关入口 39
func_Redo Log_40 module/mod40.cc Redo Log 相关入口 40
参数 默认 说明
—— —— ——
innodb_redo_log_1 见文档 参数说明 1
innodb_redo_log_2 见文档 参数说明 2
innodb_redo_log_3 见文档 参数说明 3
innodb_redo_log_4 见文档 参数说明 4
innodb_redo_log_5 见文档 参数说明 5
innodb_redo_log_6 见文档 参数说明 6
innodb_redo_log_7 见文档 参数说明 7
innodb_redo_log_8 见文档 参数说明 8
innodb_redo_log_9 见文档 参数说明 9
innodb_redo_log_10 见文档 参数说明 10
innodb_redo_log_11 见文档 参数说明 11
innodb_redo_log_12 见文档 参数说明 12
innodb_redo_log_13 见文档 参数说明 13
innodb_redo_log_14 见文档 参数说明 14
innodb_redo_log_15 见文档 参数说明 15
innodb_redo_log_16 见文档 参数说明 16
innodb_redo_log_17 见文档 参数说明 17
innodb_redo_log_18 见文档 参数说明 18
innodb_redo_log_19 见文档 参数说明 19
innodb_redo_log_20 见文档 参数说明 20
innodb_redo_log_21 见文档 参数说明 21
innodb_redo_log_22 见文档 参数说明 22
innodb_redo_log_23 见文档 参数说明 23
innodb_redo_log_24 见文档 参数说明 24
innodb_redo_log_25 见文档 参数说明 25
innodb_redo_log_26 见文档 参数说明 26
innodb_redo_log_27 见文档 参数说明 27
innodb_redo_log_28 见文档 参数说明 28
innodb_redo_log_29 见文档 参数说明 29
innodb_redo_log_30 见文档 参数说明 30

专题深化 1:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 1.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 1.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 1.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 1.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 1.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 2:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 2.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 2.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 2.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 2.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 2.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 3:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 3.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 3.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 3.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 3.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 3.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 4:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 4.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 4.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 4.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 4.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 4.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 5:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 5.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 5.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 5.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 5.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 5.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 6:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 6.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 6.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 6.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 6.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 6.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 7:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 7.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 7.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 7.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 7.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 7.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 8:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 8.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 8.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 8.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 8.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 8.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 9:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 9.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 9.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 9.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 9.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 9.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 10:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 10.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 10.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 10.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 10.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 10.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 11:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 11.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 11.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 11.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 11.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 11.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 12:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 12.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 12.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 12.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 12.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 12.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 13:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 13.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 13.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 13.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 13.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 13.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 14:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 14.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 14.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 14.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 14.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 14.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 15:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 15.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 15.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 15.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 15.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 15.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 16:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 16.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 16.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 16.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 16.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 16.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 17:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 17.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 17.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 17.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 17.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 17.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。 ## 专题深化 18:Redo Log 与全栈路径

InnoDB 的 Redo Log 机制必须与 redo(log0log.cc)、undo(trx0undo.cc)、Buffer Pool(buf0buf.cc) 一并理解。连接线程在执行 DML 时持有 THD,通过 ha_innobase 进入存储引擎;每次页级修改包在 mtrmtr0mtr.cc)内,保证 redo 记录与页 latch 的原子性。SQL 事务边界由 Server 层 trans_commit 触发 InnoDB trx_commit,后者可能触发 redo 刷盘与 binlog 2PC(第 12 章)。

专题深化 18.1 同步原语层次

短临界区用 mutex_enter / mutex_exitsync0sync.cc);buffer 页内容用 rw_lock_s/xsync0rw.cc); 事务系统全局状态用 trx_sys->mutexperformance_schemawait/synch/mutex/innodb/%wait/synch/rwlock/innodb/% 是定位热点争用的第一手证据——需在本地实例上按 workload 采集,不可套用他方 benchmark。

专题深化 18.2 8.0.36 源码阅读顺序

建议顺序:include/srv0srv.h 看全局变量 → srv/srv0srv.cc 看启动 → 本章核心目录 → mtr/mtr0mtr.cc 理解 redo 写入 → log/log0log.cc 理解 LSN。调试编译(-DWITH_DEBUG=1)可启用 UNIV_DEBUG 断言, 但生产镜像应使用官方 GA 构建。

专题深化 18.3 实验纪律

凡涉及 SHOW ENGINE INNODB STATUS、Performance Schema、data_locks 的实验,本文均标注 需本地验证。 记录:版本、innodb_page_size、存储介质、并发度、预热次数。性能数字至少 3 次采样取中位数;不得编造输出。

专题深化 18.4 与 PG 系列对照阅读

若已读 PostgreSQL 内核系列,请用「同一 DML 问题」对照:PG 用多版本行 + CLOG, InnoDB 用 undo 链 + Read View;PG 用 WAL + checkpoint,InnoDB 用 redo + flush 列表 + doublewrite。 对照时只比较机制,不比较绝对性能——缓存大小、页大小、复制模型均不同。

专题深化 18.5 生产边界

Cloud RDS/Aurora 内部存储与 redo 路径可能与社区版不同;本文以社区版 storage/innobase/ 为准。 MariaDB 10.x 在 instant DDL、部分 purge 路径上存在分叉——以 Release Notes 为准。

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-18 · database / kernel

【MySQL InnoDB 内核】InnoDB 存储引擎机制深度拆解

从线程模型到页格式、从 undo log MVCC 到 binlog 两阶段提交——对 MySQL InnoDB 做源码级拆解,并与 PostgreSQL 内核系列逐章对照。20 篇覆盖内核机制与生产运维实战,面向 MySQL DBA、从 PG 转 MySQL 的后端与数据库内核开发者。


By .