【发布时间】:2014-06-22 23:22:12
【问题描述】:
我浏览了一些来源,但最近发现一个说在严格的 2PL 中甚至不允许共享读锁。这是真的?另请确认 Conservative 和 Basic 2PL 允许共享?
【问题讨论】:
标签: database concurrency locking acid
我浏览了一些来源,但最近发现一个说在严格的 2PL 中甚至不允许共享读锁。这是真的?另请确认 Conservative 和 Basic 2PL 允许共享?
【问题讨论】:
标签: database concurrency locking acid
锁兼容性矩阵回答了您的问题
Lock-Type Read-Lock write-Lock
Read-Lock X
Write-Lock X X
这里X表示两种锁不兼容,空白表示锁兼容。共享锁(读锁)只有在该项目上持有共享锁时才允许。
关于严格和严格的 2PL,与基本 2PL 相比,区别仅在于释放锁的顺序。
在严格的 2PL 中,所有写锁只有在提交/中止操作后才会释放。
在严格的 2PL 中,只有在提交/中止操作后才会释放所有锁。
【讨论】: