我试图理解一篇关于并发B-树的论文,作者在论文中提到了闩锁与锁,以及闩锁如何不需要"锁管理器".两天来,我一直在努力找出这两者之间的区别.

谷歌带来了:

"锁保证了数据的逻辑一致性.它们是通过一个长时间持有的锁表(如2PL)和部分死锁检测机制来实现的.

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

然而,我仍然很困惑.有人能详细说明一下吗?锁管理器到底做什么?

提前谢谢您.

推荐答案

摘自CMU 15-721(2016年 spring ),第六讲演示,幻灯片25和26,其中引用了Goetz Graefe的100:

Locks

Latches
→ Protects the critical sections of the index’s internal data structure from other threads.
→ Held for operation duration.
→ Do not need to be able to rollback changes.

Locks and latches

Database相关问答推荐

包含接受Cassandra中多个数据的语句

是否可以同时从 RocksDB 读取?

术语 SSTable 和 LSM Tree 有什么区别

如何理解mysql explain 命令

如何打印出 sequelize 实例的表名?

Java 数据库连接池(BoneCP vs DBPool vs c3p0)

处理hibernate entities上的数据库视图的优雅方法?

ORA-00060: deadlock detected while waiting for resource

在默认路径下使用脚本创建数据库?

为什么会一直出现Table is marked for deletion的消息?

如何在 Postgres 9.6+ 中生成长度为 N 的随机、唯一的字母数字 ID?

如何在我的 SQL Server 代理作业(job)中创建一个将运行我的 SSIS 包的步骤?

PDO SQL 状态00000但仍然错误?

什么时候用R,什么时候用SQL?

如果表不存在,如何使用 Derby Db 创建表

将用户数据存储在 LDAP 而不是 RDBMS 中的原因

SQL 查询 - 如何按 null 或不为 null 进行过滤

使用 PHP/MySQL 导入 CSV 数据

数据库效率 - 每个用户的表与用户表

清空数据库是什么意思?