1
数据库原理与应用技术
1.7.2.2 6.2.2 排他型封锁
6.2.2 排他型封锁

为解决并发控制带来的问题,通常要采用封锁技术。所谓封锁是指事务T向系统发出请求,对T将要处理的数据对象加锁,这样事务T便可在释放锁之前控制该数据对象,避免其他事务更新该数据对象。

封锁是防止其他事务访问指定资源的手段,是实现并发控制的主要方法,是多个用户同时操纵同一数据库中的数据而不发生数据不一致现象的重要保障。

常用的封锁有排他型封锁(Exclusive Locks,X封锁)和共享型封锁(Share Locks, S封锁)两种。下面首先介绍X封锁。

X封锁是指一旦事务得到了对某一数据的X封锁,就只允许该事务读取和修改这一数据对象,其他任何事务再不能对事务进行任何类型封锁。其他事务只能进入等待状态,直到第一个事务撤销对该数据的封锁。

X封锁的规则称为PX协议,其内容为:任何企图更新数据R(R可以是数据项、记录数据集甚至是整个数据库)的事务必须先执行LOCK X(R)操作,以获得对该记录进行寻址的能力,并对它取得X封锁。如果未获得X封锁,那么这个事务进入等待状态,直到获得X封锁,事务继续进行。只有成功进行X封锁的事务,才能对数据进行修改。

以上操作记为:先X封锁,再执行,取不到,就等待。

对于更新操作,为防止出现前述问题,必须使用X封锁。但对于插入操作,因不需要读记录,因此就没必要使用X封锁。