1
数据库原理与应用技术
1.7.2.4 6.2.4 共享型封锁
6.2.4 共享型封锁

共享型封锁(S封锁)允许并行事务读取同一种资源。使用S封锁锁定资源时,不允许修改数据的事务访问数据。在读取数据的事务读完数据之后,立即释放所占用的资源,即释放S封锁后,其他事务才可以修改R。一般地,当使用SELECT语句访问数据时,系统会自动对所访问的数据使用共享锁锁定。

S封锁的规则称为PS协议,其内容为:任何要更新记录R的事务必须先执行LOCK S (R)操作,以获得对该记录寻址的能力并对它取得S封锁。如果未获准S封锁,那么这个事务进入等待状态,直到获准S封锁,事务才继续进行下去。在事务获准对记录R的封锁后,在记录R修改前必须把S封锁升级为X封锁。

上述操作可记为:先S封锁,再执行,锁不到,就等待。若要修改,则升级为X封锁。

如果事务T对数据R加上S封锁,则其他事务对R的X封锁不能成功,而对R的S封锁可以成功,从而保证了其他事务可以读R但不能修改R。将S封锁升级为X封锁的优点是:虽减少X封锁增加了并发可能性,但增加了死锁的可能性。升级用UPGRADE语句表示。