返回
MySQL 事务与锁
百科(权威知识源 · 考试范围)
作者:管理员最后更新:2026/9/4 12:41:08审核:管理员

MySQL 事务与锁机制

事务保证一组操作要么全部成功,要么全部失败,是数据库可靠性的核心。

事务的 ACID

  • 原子性(Atomicity):事务中的操作要么都做、要么都不做;失败可回滚。
  • 一致性(Consistency):事务执行前后数据保持一致。
  • 隔离性(Isolation):并发事务互不干扰。
  • 持久性(Durability):事务提交后数据长期保存(Redo Log 保证)。

隔离级别

由低到高四个隔离级别:

隔离级别 脏读 不可重复读 幻读
读未提交 可能 可能 可能
读已提交(RC) 可能 可能
可重复读(RR) InnoDB 防
串行化
  • 脏读:读到另一事务未提交的数据。
  • 不可重复读:同一事务内两次读同一数据结果不同(其他事务修改并提交)。
  • 幻读:同一事务内两次查询结果行数不同(其他事务插入/删除)。

MySQL InnoDB 默认隔离级别是可重复读(RR),通过 MVCC + 间隙锁防止幻读。

MVCC(多版本并发控制)

MVCC 通过 Undo Log 版本链 + ReadView 实现:读写不阻塞,提供快照读。每个事务看到的数据版本由事务 id 与 ReadView 决定。

锁机制

乐观锁 vs 悲观锁

  • 乐观锁:用版本号 / CAS 更新,提交时校验冲突。
  • 悲观锁:用数据库锁(select .. for update)。

按粒度

  • 表锁:锁整表,并发差。
  • 行锁:记录锁、间隙锁、next-key 锁。InnoDB 行锁基于索引,若条件无索引会退化为表锁。

死锁

死锁指两个事务互相持有对方需要的资源,导致互相等待。InnoDB 会自动检测死锁,并回滚代价较小的事务。

防止死锁:按固定顺序访问资源、缩短事务长度、避免大事务、减少不必要的锁。

总结

  • ACID + 隔离级别 + MVCC + 锁,共同保证事务正确与并发性能。
  • InnoDB 默认 RR,用 MVCC 与间隙锁防幻读。
  • 行锁基于索引;合理设计事务与索引可减少锁冲突与死锁。
考试信息
通过标准满分(错一道即与满分无缘,可把整卷答完看解析;重考不限次数)
时间限制不限时
单卷抽题数10 题
成绩窗口2026-09-14 ~ 2026-09-20
积分学费20 积分
支付方式满分后用积分支付(自主决定)
用积分支付:成绩长期保留,参与排名,积分学费含平台资助池;不支付:成绩保留至窗口截止后清空
积分无充值通道;积分不足 10 时,平台自动发放 100 积分。积分不可提现、不可转让、无现金价值。
排行榜(窗口期最短满分用时 · 前 0 名)
当前窗口(2026-09-14 ~ 2026-09-20)

该窗口暂无满分记录

课程(免费学习 · 共 0 门)

暂无课程

登录后可查看我的出题、测试记录并参加满分考试