ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MySQL事务和锁

2026/8/17 4:29:52 拓冰建站 浏览量
MySQL事务和锁

什么是事务

为什么使用事务

怎么使用事务

如何实现原子性

回滚(rollback)是如何实现的

如何实现持久性

所以总体步骤是:

1.读取磁盘中的页数据到内存

2.DML操作

3.将原数据存入undo log日志(用于后面服务器故障导致未提交事务的回滚)

4.执行修改

5.将修改操作写入redo Log

6.将redo Log写入Log Buffe

7.将Log Buffer中的内容写入磁盘

这里不用担心redo Log 写入磁盘失败,因为如果写入磁盘失败,下面的第八步提交事务就会失败,而未提交的事务,之间回滚就是了

8.提交事务

9.将数据从内存写入双写缓冲区(这一步是为了如果数据从内存写入磁盘的时候,已经写入一些了,突然崩溃导致磁盘中数据错误,可以通过参照是否和双写缓冲区中内容一样,如果不一样,则按双写缓冲区中内容进行恢复)

无双写缓冲区直接写磁盘,核心风险是 16KB 数据页的 “部分写 / 页断裂”,这是 Redo Log 无法修复的致命问题;

10.数据落盘

事务的隔离性

锁的类型

共享锁和独占锁

意向锁

索引记录锁

间隙锁

临建锁(Next-key -lock)

插入意向锁

事务的隔离级别

多版本并发控制MVCC

实现原理

ReadView

读未提交与脏读

读已提交和不可重复读

可重复读与幻觉

串行化