7

我在网上找到了许多资源,提供了 MVCC(多版本并发控制)概念的一般概述,但没有关于它应该如何工作或实现的详细技术参考。是否有任何在线文档或离线书籍包含足够的理论(理想情况下还有一些实际帮助)作为实施的基础?我希望或多或少地模仿 PostgreSQL 所做的事情。

(有关信息,我将使用 SAS/Share 在 SAS 中实现它——它提供了一些锁定原语和对底层数据存储的并发读/写访问,但没有任何事务隔离或适当的 DBMS 功能。如果有人熟悉SAS/Share 并认为这是一项不可能完成的任务,请大声疾呼!)

4

3 回答 3

3

事务处理:概念与技术事务信息系统:并发控制与恢复的理论、算法和实践是事务处理的权威来源。

PostgreSQL Wiki中也提到了这两本书。

于 2011-03-03T11:08:41.940 回答
1

我写了一篇关于这个的博客文章:

https://elliot.land/post/implementing-your-own-transactions-with-mvcc

于 2015-12-20T08:37:04.537 回答
1

PostgreSQL 中的表可以存储同一行的多个版本。

此外,还有两列:

  • tmin - 标记插入行的事务 id
  • tmax - 标记删除该行的事务 id

更新是通过删除和插入新记录来完成的,VACUUM 过程收集不再使用的旧版本。

于 2017-03-01T12:10:48.503 回答