扫一扫二维码
进群一起备考
查看更多
当前 - 选择题 - 数据库理论简单
单选题
2020年5月第26题
简单
单选题
2020年5月第26题
#第二版教材
#必须掌握
若事务T1对数据D1已加排它锁,事务T2对数据D2已加共享锁,那么(__)。
问题(1)
浓缩知识点
数据库并发控制里的共享锁(S锁)和排它锁(X锁)遵循以下核心兼容规则:共享锁之间彼此兼容,多个事务可同时给同一数据加共享锁,这类锁多用于只读操作,能支撑多事务并发读且保障读数据的一致性;共享锁与排它锁互斥,排它锁则与所有锁(包括其他排它锁、共享锁)都互斥。排它锁多用于数据写操作,一旦某事务对数据加了排它锁,其他事务就无法给该数据加任何锁;若数据已被加共享锁,其他事务只能加共享锁,无法加排它锁。
正确答案
D
本题考察的是数据库并发控制中的封锁协议(S锁与X锁的兼容性)。
共享锁(S)之间兼容,但与排它锁(X)不兼容;排它锁与任何锁均不兼容。
A选项:T1对D2可加S(与T2的S兼容)正确,但T2对D1已被T1加X锁,任何锁都不能再加,故“T2对D1加S成功”错误。
B选项:T1对D2加S不应失败,因为与T2的S兼容;故前半句错误。后半句同样把T2对D1加S描述为成功,也错误。
C选项:T1对D2加S应成功(而不是失败),且在D2已有S(由T2持有)的情况下,T1不可能再加X(不兼容),故两处均错误。
D选项:T1对D2加S与T2的S兼容,故成功;T1想对D2再加X与现有S不兼容,失败。T2对D1因T1持有X锁,S与X均不兼容,故两者都失败。该项全面符合锁兼容矩阵,正确。
