共享锁与排他所
在多用户共享的系统中,多用户对同一数据进行操作可能会带来数据不一致的情况,因此在并发操作中需要加锁操作,以此控制事务的并发执行。
共享锁:从名字可以看出,该锁可共享,写操作肯定不可共享,一共享数据就被写乱了,便没有“锁”可言了,所以共享锁为读操作“共享”,即本锁加上之后不可再进行写操作,但是可以读,也可称为只读锁。
排它锁:排它锁就比较霸道了,只要我加上这个锁,其他操作均不可进行,为啥呢?因为我要对该数据进行修改了,既然我要修改必然不能让别人再来修改,也必然不能加只读锁,因为加上只读锁,我就无法进行写操作了。
例:若事务 T1对数据 D1 加了共享锁,事务 T2 、T3分别对数据 D2 、D3 加了排它锁,则事务 T1对数据(51);事务 T2对数据(52)。
(51)A. D2 、D3 加排它锁都成功
B. D2 、D3 加共享锁都成功
C. D2 加共享锁成功 ,D3 加排它锁失败
D. D2 、D3 加排它锁和共享锁都失败
(52)A. D1 、D3 加共享锁都失败
B. D1、D3 加共享锁都成功
C. D1 加共享锁成功 ,D3 加排它锁失败
D. D1 加排它锁成功 ,D3 加共享锁失败
有共享锁可以再加共享锁,但不可以加排他锁。有排它锁,则共享锁和排它锁都不可以再加。
选D,C。