Skip to content
Self-Knowing

第十一章 并发控制

约 502 个字 预计阅读时间 2 分钟

事务时并发控制的基本单位,并发控制机制的任务

  • 对并发操作进行正确调度。
  • 保证事务的隔离性。
  • 保证数据库的一致性。

并发操作带来的数据不一致性:丢失修改,不可重复读,读脏数据

  • 读脏数据:读了之后,有其他用户撤回了修改数据的操作。
  • 不可重复读:读了之后,有其他用户改了数据。

并发控制的主要技术:封锁,时间戳,乐观控制法,多版本并发控制。

封锁

封锁 == 加锁。

基本封锁类型 - 排它锁(X 锁):只允许加锁的用户读写操作。 - 共享锁(S 锁):其他用户可读,不可写。

封锁协议

一级封锁协议

在修改数据前加 X 锁,修改完后释放,读数据前不加锁。 - 保证丢失修改 - 不能保证:不可重复读,读脏数据

二级封锁协议

读之前加 S 锁,读完后释放。 - 保证:丢失修改,读脏数据 - 不能保证:不可重复读

三级封锁协议

读之前加 S锁,事务结束 才释放。 - 三种都能保证。

活锁和死锁

活锁:饥饿,长时间等待。 - 采用先来先服务来解决活锁。

死锁:循环等待 - 死锁的诊断:超时法 和 等待图法。 - 死锁的解除:撤销一个代价最小的事务。

并发调度的可串行性

可串行化调度:多个事务并发执行时正确的,当且仅当其结果与按某一次序串行执行这些事务的结果相同。

冲突操作:不同事务对一数据 的 “读写操作” 和 “写写操作”。

交换不冲突的两个事务,使得冲突的调度变成不冲突的。

两段锁协议

先加锁,再解锁。

封锁对象的大小称为封锁粒度。 - 封锁的对象:逻辑单元,物理单元


Created: April 24, 2026
Last update: April 24, 2026

Discussion