Skip to content

第五章|事务与隔离 ​

本章目标 ​

学习数据库事务的原理和实践,掌握 ACID 特性、隔离级别、锁机制,理解并发控制和一致性保证。

从事务的基本操作开始,理解 ACID 四大特性,学会使用不同的隔离级别处理并发问题,掌握锁机制和死锁处理,最后理解 MVCC 的工作原理。

学习路径 ​

按顺序阅读以下文章,每篇包含讲解、示例和练习:

  1. 事务基础:BEGIN、COMMIT、ROLLBACK
    理解事务的概念,掌握事务的基本操作。

  2. ACID 原则:原子性、一致性、隔离性、持久性
    理解事务的四大特性及其保证机制。

  3. 隔离级别:READ UNCOMMITTED 到 SERIALIZABLE
    掌握四种隔离级别,理解脏读、不可重复读、幻读。

  4. 锁机制与死锁
    理解行锁、表锁、意向锁,学会处理死锁。

  5. MVCC 与并发控制
    理解多版本并发控制的工作原理。

关键概念 ​

事务保证数据一致性 ​

事务是一组操作的逻辑单元,要么全部成功,要么全部失败:

sql
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

如果转账过程中发生错误,ROLLBACK 确保两个账户都不变。

ACID 四大特性 ​

  • Atomicity(原子性):全部成功或全部失败
  • Consistency(一致性):从一个一致状态到另一个一致状态
  • Isolation(隔离性):事务之间相互隔离
  • Durability(持久性):提交后永久保存

隔离级别平衡性能与一致性 ​

隔离级别脏读不可重复读幻读
READ UNCOMMITTED是是是
READ COMMITTED否是是
REPEATABLE READ否否是
SERIALIZABLE否否否

锁控制并发访问 ​

  • 共享锁(S锁):读锁,多个事务可以同时持有
  • 排他锁(X锁):写锁,独占访问
  • 死锁:两个事务互相等待对方释放锁

前置知识 ​

  • 掌握 SELECT、INSERT、UPDATE、DELETE
  • 理解数据一致性的重要性
  • 了解并发的概念

后续章节 ​

完成本章后,继续学习:

练习答案 ​

本章所有练习的答案和详细解释:第五章练习答案

深入阅读 ​

为什么需要事务? ​

在多用户并发访问数据库时,如果没有事务保护,可能出现:

  • 转账时系统崩溃,钱从一个账户扣除但没有加到另一个账户
  • 两个用户同时修改同一行数据,后者覆盖前者的修改
  • 查询过程中数据被其他事务修改,导致结果不一致

事务通过 ACID 特性解决这些问题。

性能与一致性的权衡 ​

更高的隔离级别提供更强的一致性保证,但降低并发性能。选择合适的隔离级别取决于应用场景:

  • 金融系统:SERIALIZABLE(严格一致性)
  • 电商系统:READ COMMITTED(平衡性能与一致性)
  • 统计报表:READ UNCOMMITTED(高性能,允许脏读)

返回SQL 学习路线 · 开始第一节

用心记录每一步成长