第 20 / 22 篇

附录 B:来源与复核范围

以下第一方资料已于2026-10-21读取。书内实验使用MySQL 8.4.11与InnoDB,具体运行、配置和镜像摘要见随书证据;文档解释与实验观察分别保留,不以一方替代另一方。

M01 · InnoDB Error Handling

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-error-handling.html

死锁回滚事务;默认锁等待超时回滚当前语句;必须明确恢复范围。

M02 · Consistent Nonlocking Reads

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-consistent-read.html

RR的一致性快照在第一次此类读取建立,RC每次一致性读建立新快照,自己的修改仍可见。

M03 · Transaction Isolation Levels

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-transaction-isolation-levels.html

隔离级别和具体语句、索引及锁策略共同决定并发行为,不能仅由级别名称推导所有SQL。

M04 · Locking Reads

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-locking-reads.html

锁定读与普通快照读取不同;SKIP LOCKED会跳过记录,适合部分队列式场景而非一般一致性统计。

M05 · Deadlocks in InnoDB

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-deadlocks.html

锁顺序、事务长度和索引会影响竞争;SHOW ENGINE INNODB STATUS可观察最近死锁。

M06 · EXPLAIN Output Format

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/explain-output.html

访问方式、选定索引与扫描估计需要分别解释,EXPLAIN估计不等于实际性能基准。

M07 · Statements That Cause an Implicit Commit

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/implicit-commit.html

不少DDL形成隐式提交,应与业务事务分开设计。

M08 · Performance Schema data_lock_waits Table

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/performance-schema-data-lock-waits-table.html

等待边表与data_locks可关联实际请求与阻塞,仍需观测权限和业务上下文。

M09 · autocommit, Commit, and Rollback

https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-autocommit-commit-rollback.html

事务边界由连接模式与显式结束命令共同决定,应用需处理未结束连接。

驱动与实验环境

PyMySQL 1.2.3的发布元数据与分发源码来自 https://pypi.org/project/PyMySQL/1.2.3/,本版已核对连接参数与TLS协商代码。故障代理连接显式使用ssl_disabled,普通连接保留驱动行为;生产证书验证需要另行明确配置。

真实实验运行:https://github.com/Aias00/mysql-reliability-book/actions/runs/39574392227 。该次15项全部通过,MySQL版本8.4.11、Python3.12.15,运行结果与镜像摘要附在lab/evidence/。正式出版CI会对同源代码再次执行,并将相应产物与EPUB一起发布。

本书没有主从切换、断电、恢复备份或生产压测证据。官方手册提供的配置与能力,需要结合自己的版本、权限与业务语句验证。来源更新后,优先复核事务回滚范围、锁与读语义、计划字段和恢复流程,而不是仅替换版本号。