我试图理解一篇关于并发B树的文章,其中作者提到了闩锁与锁,以及闩锁如何不需要“锁管理器”。我一直试图找出这两天之间的区别。

Google导致:

“锁可确保数据的逻辑一致性。它们是通过长时间保存(例如2PL)的锁表和死锁检测机制的一部分来实现的。

闩锁就像信号灯。它们确保了数据和资源的物理一致性,这在事务级别是不可见的”

但是,我还是很困惑。有人可以详细说明吗?锁管理器到底是做什么的?

提前致谢。

最佳答案

CMU 15-721(2016年 Spring )第6讲演示,幻灯片25和26,引用了Goetz Graefe的A Survey of B-Tree Locking Techniques:

锁定
→保护索引的逻辑内容免受其他TXN的侵害。
→保持txn时间。
→需要能够回滚更改。

闩锁
→保护索引的内部数据结构的关键部分免受其他线程的攻击。
→保持操作时间。
→不需要能够回滚更改。

database - 在并发访问数据库的情况下,锁和闩锁之间有什么区别?-LMLPHP

09-26 18:12