我试图理解一篇关于并发B树的文章,其中作者提到了闩锁与锁,以及闩锁如何不需要“锁管理器”。我一直试图找出这两天之间的区别。
Google导致:
“锁可确保数据的逻辑一致性。它们是通过长时间保存(例如2PL)的锁表和死锁检测机制的一部分来实现的。
闩锁就像信号灯。它们确保了数据和资源的物理一致性,这在事务级别是不可见的”
但是,我还是很困惑。有人可以详细说明吗?锁管理器到底是做什么的?
提前致谢。
最佳答案
CMU 15-721(2016年 Spring )第6讲演示,幻灯片25和26,引用了Goetz Graefe的A Survey of B-Tree Locking Techniques:
锁定
→保护索引的逻辑内容免受其他TXN的侵害。
→保持txn时间。
→需要能够回滚更改。
闩锁
→保护索引的内部数据结构的关键部分免受其他线程的攻击。
→保持操作时间。
→不需要能够回滚更改。