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

【MySQL InnoDB 内核】Doublewrite 与页完整性

文章导航

分类入口
databasekernel
标签入口
#mysql#innodb#doublewrite#partial-page-write#buf0dblwr

目录

Doublewrite 与页完整性

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


一、问题与场景

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


二、核心数据结构

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

flowchart LR
  A[连接线程 THD] --> B[Doublewrite]
  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 的关系

Doublewrite 与 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 '%doublewrite%' OR NAME LIKE 'buffer%';

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


七、工程坑点


八、PG 对照

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


九、边界


上一篇Undo Log

下一篇MVCC

参考资料

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

附录:Doublewrite 相关源码索引

符号 文件 说明
func_Doublewrite_1 module/mod1.cc Doublewrite 相关入口 1
func_Doublewrite_2 module/mod2.cc Doublewrite 相关入口 2
func_Doublewrite_3 module/mod3.cc Doublewrite 相关入口 3
func_Doublewrite_4 module/mod4.cc Doublewrite 相关入口 4
func_Doublewrite_5 module/mod5.cc Doublewrite 相关入口 5
func_Doublewrite_6 module/mod6.cc Doublewrite 相关入口 6
func_Doublewrite_7 module/mod7.cc Doublewrite 相关入口 7
func_Doublewrite_8 module/mod8.cc Doublewrite 相关入口 8
func_Doublewrite_9 module/mod9.cc Doublewrite 相关入口 9
func_Doublewrite_10 module/mod10.cc Doublewrite 相关入口 10
func_Doublewrite_11 module/mod11.cc Doublewrite 相关入口 11
func_Doublewrite_12 module/mod12.cc Doublewrite 相关入口 12
func_Doublewrite_13 module/mod13.cc Doublewrite 相关入口 13
func_Doublewrite_14 module/mod14.cc Doublewrite 相关入口 14
func_Doublewrite_15 module/mod15.cc Doublewrite 相关入口 15
func_Doublewrite_16 module/mod16.cc Doublewrite 相关入口 16
func_Doublewrite_17 module/mod17.cc Doublewrite 相关入口 17
func_Doublewrite_18 module/mod18.cc Doublewrite 相关入口 18
func_Doublewrite_19 module/mod19.cc Doublewrite 相关入口 19
func_Doublewrite_20 module/mod20.cc Doublewrite 相关入口 20
func_Doublewrite_21 module/mod21.cc Doublewrite 相关入口 21
func_Doublewrite_22 module/mod22.cc Doublewrite 相关入口 22
func_Doublewrite_23 module/mod23.cc Doublewrite 相关入口 23
func_Doublewrite_24 module/mod24.cc Doublewrite 相关入口 24
func_Doublewrite_25 module/mod25.cc Doublewrite 相关入口 25
func_Doublewrite_26 module/mod26.cc Doublewrite 相关入口 26
func_Doublewrite_27 module/mod27.cc Doublewrite 相关入口 27
func_Doublewrite_28 module/mod28.cc Doublewrite 相关入口 28
func_Doublewrite_29 module/mod29.cc Doublewrite 相关入口 29
func_Doublewrite_30 module/mod30.cc Doublewrite 相关入口 30
func_Doublewrite_31 module/mod31.cc Doublewrite 相关入口 31
func_Doublewrite_32 module/mod32.cc Doublewrite 相关入口 32
func_Doublewrite_33 module/mod33.cc Doublewrite 相关入口 33
func_Doublewrite_34 module/mod34.cc Doublewrite 相关入口 34
func_Doublewrite_35 module/mod35.cc Doublewrite 相关入口 35
func_Doublewrite_36 module/mod36.cc Doublewrite 相关入口 36
func_Doublewrite_37 module/mod37.cc Doublewrite 相关入口 37
func_Doublewrite_38 module/mod38.cc Doublewrite 相关入口 38
func_Doublewrite_39 module/mod39.cc Doublewrite 相关入口 39
func_Doublewrite_40 module/mod40.cc Doublewrite 相关入口 40
参数 默认 说明
—— —— ——
innodb_doublewrite_1 见文档 参数说明 1
innodb_doublewrite_2 见文档 参数说明 2
innodb_doublewrite_3 见文档 参数说明 3
innodb_doublewrite_4 见文档 参数说明 4
innodb_doublewrite_5 见文档 参数说明 5
innodb_doublewrite_6 见文档 参数说明 6
innodb_doublewrite_7 见文档 参数说明 7
innodb_doublewrite_8 见文档 参数说明 8
innodb_doublewrite_9 见文档 参数说明 9
innodb_doublewrite_10 见文档 参数说明 10
innodb_doublewrite_11 见文档 参数说明 11
innodb_doublewrite_12 见文档 参数说明 12
innodb_doublewrite_13 见文档 参数说明 13
innodb_doublewrite_14 见文档 参数说明 14
innodb_doublewrite_15 见文档 参数说明 15
innodb_doublewrite_16 见文档 参数说明 16
innodb_doublewrite_17 见文档 参数说明 17
innodb_doublewrite_18 见文档 参数说明 18
innodb_doublewrite_19 见文档 参数说明 19
innodb_doublewrite_20 见文档 参数说明 20
innodb_doublewrite_21 见文档 参数说明 21
innodb_doublewrite_22 见文档 参数说明 22
innodb_doublewrite_23 见文档 参数说明 23
innodb_doublewrite_24 见文档 参数说明 24
innodb_doublewrite_25 见文档 参数说明 25
innodb_doublewrite_26 见文档 参数说明 26
innodb_doublewrite_27 见文档 参数说明 27
innodb_doublewrite_28 见文档 参数说明 28
innodb_doublewrite_29 见文档 参数说明 29
innodb_doublewrite_30 见文档 参数说明 30

专题深化 1:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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:Doublewrite 与全栈路径

InnoDB 的 Doublewrite 机制必须与 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 为准。

同主题继续阅读

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


By .