837.【系统架构2】数据库事务——封锁协议

2023-10-29  本文已影响0人  七镜
  1. X 锁排他锁(写锁)。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改A,其他事务都不能再对 A 加任何类型的锁,知道 T 释放 A 上的锁。
  2. S 锁是共享锁(读锁)。若事务 T 对数据对象 A 加上 S 锁,则只允许 T 读取 A ,但不能修改 A,其他事务只能再对 A 加 S 锁(也即能读不能修改),知道 T 释放 A 上的 S 锁。

封锁协议分为三个等级,定义如下:

  1. 一级封锁协议:事务在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放。可解决丢失更新问题。

  2. 二级封锁协议:在一级封锁协议的基础上加上事务 T 在读数据 R 之前必须先对其加 S 锁,读完后即可释放 S 锁。可解决丢失更新、读脏数据问题。

  3. 三级封锁协议:一级封锁协议加上事务 T 在读数据 R 之前先对其加 S 锁,直到事务结束才释放。可解决丢失更新、读脏数据、数据重复读问题。

上一篇 下一篇

猜你喜欢

热点阅读