我如何实施MVCC?

时间:2011-03-03 10:45:52

标签: sas database mvcc database-theory

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

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

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我写了一篇关于how MVCC works in PostgreSQL的博文。基本上,PostgreSQL中的表可能会疼痛同一行的多个版本。

此外,还有两列:

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

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

答案 2 :(得分:0)