列表

详情


若事务T1对数据D1已加排它锁,事务T2对数据D2已加共享锁,那么()。

A. 事务T1对数据D2加共享锁成功,加排它锁失败;事务T2对数据D1加共享锁成功、加排它锁失败

B. 事务T1对数据D2加排它锁和共享锁都失败;事务T2对数据D1加共享锁成功、加排它锁失败

C. 事务T1对数据D2加共享锁失败,加排它锁成功;事务T2对数据D1加共享锁成功、加排它锁失败

D. 事务T1对数据D2加共享锁成功,加排它锁失败;事务T2对数据D1加共享锁和排它锁都失败

参考答案: D

详细解析:

本题是对封锁协议的考查。

共享锁(S锁):又称读锁,若事务T对数据对象A加上S锁,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
排他锁(X锁):又称写锁。若事务T对数据对象A加上X锁,其他事务不能再对A加任何锁,直到T释放A上的锁。
因为事务T1对数据D1已加排它锁,那么其他事务不能再对D1加任何锁,直到T1释放D1上的锁。可以直接排除ABC三个选项。事务T2对数据D2已加共享锁,所以,其他事务只能再对D2加共享锁,而不能加排他锁,直到T2释放D2上的共享锁,所以D选项说法正确。

上一题