CSNotesCSNotes
MySQL
Java
SSM
Redis
学习路线
TODO
实用工具
GitHub
MySQL
Java
SSM
Redis
学习路线
TODO
实用工具
GitHub
  • 第一章 SQL 语法

    • 一、MySQL 语法基础
    • 二、多表查询与笛卡尔积
    • 三、JOIN 类型与算法
    • 四、LIKE 通配符与正则
    • 五、GROUP BY/HAVING /窗口函数
    • 六、字段类型与选型
    • 七、约束、主键与 DDL 语法
    • 八、SQL 实用函数
    • 九、TRUNCATE
    • 十、数据建模范式
    • 十一、exists 子查询
    • 十二、select *
  • 第二章 SQL 执行

    • 一、一条建表语句是如何执行的?
    • 二、EXPLAIN 执行计划
    • 三、一条 DELETE 语句在干什么?
    • 四、EXPLAIN 各列的含义
    • 五、JOIN 执行算法
  • 第三章 存储结构

    • 一、字符集与 CHAR/VARCHAR 存储
    • 二、最大行大小 65535 bytes
    • 三、为什么 VARCHAR 上限是 16383?
    • 四、表、页与 Page Header 概念
    • 五、InnoDB 行格式 COMPACT
    • 六、磁盘空间管理器
  • 第四章 索引

    • 一、为什么是 B+ 树?
    • 二、B+ 树插入、分裂、合并的完整过程
    • 三、容量计算:一颗高度为 3 的 B+ 树能存多少条数据?
    • 四、索引分类(聚簇/二级/联合/覆盖)
    • 五、联合索引 + 最左匹配原则
    • 六、索引失效 7 大场景
    • 七、索引创建策略:三星索引法
    • 八、执行计划
  • 第五章 事务

    • 一、事务
    • 二、事务的本质(内核视角)
    • 三、MVCC 多版本并发控制
    • 四、死锁四条件
    • 五、一条 INSERT 语句背后在干吗?
  • 第六章 日志

    • 一、Redo Log 结构
    • 二、Undo Log
    • 三、预写日志 WAL(Redo/Undo)
    • 四、两阶段提交 2PC
    • 五、崩溃恢复
    • 六、三种刷盘组合性能与一致性 tradeoff
  • 第七章 锁

    • 一、锁

二、事务的本质(内核视角)

真实的事务到底是什么?

事务=磁盘上 XID 文件 1 字节状态位+WAL 文件里一串 xid 前缀的 redo 记录+.db 文件里所有 xmin/xmax 刻了这个 xid 的行指纹;再配上内存里 4 张 ConcurrentHashMap 记录这个事务的开始时间、持有锁、WAL 字节数、修改行数/UNDO 字节数。所有这些分散在不同文件不同位置的字节,合起来此时一个事务

(一)事务的不同状态

活动的(active):

部分提交的(partially commited):事务操作完成了,但数据所造成的影响还没刷新到磁盘。

失败的(failed):

中止的(aborted):回滚到了执行事务之前的状态,相当于什么都没做。

提交的(commited):修改的数据刷新到磁盘

(二)事务大小怎么看?

(三)什么叫大事务(6 个纬度)

大事务=把 ACID 四大机制的 IO/锁/内存/时间代价放大几百倍,放大到 DB/业务撑不住

一、MySQL 官方:一个会写 redo log 超过 10MB 的事务

二、MySQL 官方:修改行数=10000 行:200B*10k 行=2MB=3 个叶子页,最多出发 2 次叶子页分裂,>10k 分裂指数级增长

三、持有锁数量=1000 个锁:死锁检测是 O(n*2),1k 锁死锁检测跑 100 万次图遍历=30ms;10k 锁=1 亿次便利=2.7 秒

四、UnDo 日志体积=5MB:会阻塞 b+ 树 split/merge

五、事务生命周期时长=300 秒

六、MVCC 版本链跳转深度=100 次

(四)日志时间

fc.force 就是刷盘

insert 完 WAL=1 次磁盘同步

insert 产生的 redo log(WAL)写完后必须立刻 fc.force 落到磁盘

(五)工业界 ARIES 恢复算法

2 大原则

原则 1:Write-Ahead Logging(先写日志)

任何“要把真实 data page 改写到磁盘”的动作发生之前,必须保证对应的 redo log 记录已经 fsync 到磁盘。

编辑此页
上次更新: 2026/9/18 20:34
Prev
一、事务
Next
三、MVCC 多版本并发控制