严格的两阶段锁定(2PL)是否允许共享的READ项目?

时间:2014-06-22 23:22:13

标签: database concurrency locking acid

我已经浏览了一些消息来源,但最近遇到一个消息,即严格的2PL中不允许使用共享读锁。这是真的?另外请确认保守和基本2PL允许共享?

1 个答案:

答案 0 :(得分:2)

Lock-Compatiability矩阵回答您的问题

Lock-Type       Read-Lock        write-Lock
Read-Lock                            X
Write-Lock         X                 X

这里X表示两种类型的锁是不兼容的,空白表示该锁是兼容的。只有在该项上保持共享锁时才允许共享锁(读锁)。

关于严格和严格的2PL,差异仅在于与基本2PL相比发布锁定的顺序。

在严格的2PL中,只有在commit / abort opeartion之后才会释放所有写锁。

在严格的2PL中,只有在提交/中止操作后才会释放所有锁。