📜  门|门 IT 2007 |第 64 题

📅  最后修改于: 2021-09-25 07:00:56             🧑  作者: Mango

考虑以下两个事务:T 1和T 2
2007_66
以下哪种方案,使用共享锁和排他锁,满足上述事务的严格两阶段锁定要求?
2007_66_1

2007_66_2
(一) A
(乙)
(C)
(四)答案: (C)
解释:

共享锁用于读,排他锁用于写数据。一个排他锁不能占用其他调度已经占用的另一个排他锁,因为这会导致死锁。遵循严格 2PL 的要求:
1. 排他锁应该在提交后释放(提交后释放排他锁限制死锁条件。即我们不能在项目上获得锁,因为排他锁已经被占用。
2.第一次解锁后不能加锁,反之亦然。

选项(A):不正确,因为写 B,S1 需要对 B 的排他锁,而写 A,S2 需要对 A 的排他锁。这就是为什么它是不正确的。
选项(B):不正确,因为一个排他锁不能占用另一个排他锁。在这里,S1 对项目 A 采取了排他锁,S2 对项目 B 采取了排他锁,所以现在 S1 不能对项目 B 采取排他锁,S2 不能对项目 A 采取排他锁。这就是为什么它是不正确的。
选项 (C):正确,因为它遵循了严格 2PL 的所有三个要求。这里,schedule S1 在 commit 后释放对 B 的独占锁,schedule S2 在 commit 后释放对 A 的独占锁。(满足条件 1)
选项(D):根据条件1不正确,提交后应释放排他锁。这里,调度 S1 在提交前释放 B 上的排他锁,调度 S2 在提交前释放 A 上的排他锁。因此它是不正确的。

该解决方案由Nitika Bansal 提供
这个问题的测验