Concurrency MVCC&;B-Tree&;并发性

Concurrency MVCC&;B-Tree&;并发性,concurrency,b-tree,mvcc,Concurrency,B Tree,Mvcc,我目前正在阅读dbms书籍,据我所知,Mvcc(多版本并发控制)用于高并发读写事务。 但“搜索结构上的并发控制”一章提到了B树的不同锁定概念(锁耦合、链接技术等) Mvcc是否应用于dbms中B树的内部节点和叶节点? B-树并发和MVCC完全不同吗?如果是的话,Mvvc是如何在dbms中实现的?MVCC可以以多种方式实现。唯一的要求是以某种方式提供旧的行版本 例如,SQLServer将它们存储在一个临时数据库中,该数据库在服务器重新启动时重置 Postgres将行版本作为隐藏行直接存储在b树中。

我目前正在阅读dbms书籍,据我所知,Mvcc(多版本并发控制)用于高并发读写事务。 但“搜索结构上的并发控制”一章提到了B树的不同锁定概念(锁耦合、链接技术等)

Mvcc是否应用于dbms中B树的内部节点和叶节点?
B-树并发和MVCC完全不同吗?如果是的话,Mvvc是如何在dbms中实现的?

MVCC可以以多种方式实现。唯一的要求是以某种方式提供旧的行版本

例如,SQLServer将它们存储在一个临时数据库中,该数据库在服务器重新启动时重置

Postgres将行版本作为隐藏行直接存储在b树中。它将向树中添加一个隐藏的键列。从树中读取时,is仅公开逻辑上应该看到的版本

RavenDB的Voron将b树页面作为不可变数据进行管理。写入将创建全新的树。因此,MVCC被实现为从正确的不可变树中读取

数据库很少长时间锁定物理结构。让数据库客户端停止数据库内部结构的进程不是一个好主意。内部结构通常锁得很短。逻辑行锁是单独处理的

如果让我猜搜索结构上的并发控制是指物理线程安全。这通常不涉及MVCC,因为不需要管理多个版本。正常内存中的锁足以进行短暂访问