第十一章 并发控制¶
约 502 个字 预计阅读时间 2 分钟
事务时并发控制的基本单位,并发控制机制的任务
- 对并发操作进行正确调度。
- 保证事务的隔离性。
- 保证数据库的一致性。
并发操作带来的数据不一致性:丢失修改,不可重复读,读脏数据。
- 读脏数据:读了之后,有其他用户撤回了修改数据的操作。
- 不可重复读:读了之后,有其他用户改了数据。
并发控制的主要技术:封锁,时间戳,乐观控制法,多版本并发控制。
封锁¶
封锁 == 加锁。
基本封锁类型
- 排它锁(X 锁):只允许加锁的用户读写操作。
- 共享锁(S 锁):其他用户可读,不可写。
封锁协议¶
一级封锁协议
在修改数据前加 X 锁,修改完后释放,读数据前不加锁。 - 保证丢失修改 - 不能保证:不可重复读,读脏数据
二级封锁协议
读之前加 S 锁,读完后释放。 - 保证:丢失修改,读脏数据 - 不能保证:不可重复读
三级封锁协议
读之前加 S锁,事务结束 才释放。 - 三种都能保证。
活锁和死锁¶
活锁:饥饿,长时间等待。 - 采用先来先服务来解决活锁。
死锁:循环等待 - 死锁的诊断:超时法 和 等待图法。 - 死锁的解除:撤销一个代价最小的事务。
并发调度的可串行性¶
可串行化调度:多个事务并发执行时正确的,当且仅当其结果与按某一次序串行执行这些事务的结果相同。
冲突操作:不同事务 对 对一数据 的 “读写操作” 和 “写写操作”。
交换不冲突的两个事务,使得冲突的调度变成不冲突的。
两段锁协议¶
先加锁,再解锁。
封锁对象的大小称为封锁粒度。 - 封锁的对象:逻辑单元,物理单元
Created:
April 24, 2026
Last update: April 24, 2026
Last update: April 24, 2026
Discussion