有关优化并发控制中的时间戳分配问题?

时间:2018-10-12 13:41:55

标签: database transactions mvcc

有一篇论文介绍了MVOCC(MVCC +优化的并发控制)

  

3.2乐观并发控制(MVOCC)
  下一个协议基于乐观并发控制   (OCC)方案于1981年提出[26]。 OCC背后的动机   DBMS假设事务不太可能发生冲突,   因此,在以下情况下,事务不必获取元组的锁:   它读取或更新它们。这样可以减少   交易持有锁。原始OCC有所更改   协议以使其适应多版本[27]。最重要的是   DBMS不会为事务维护私有工作空间,因为   元组的版本信息已阻止交易   从阅读或更新对他们不可见的版本。
  MVOCC协议将事务分为三个阶段。   事务开始时,它处于读取阶段。这是   事务调用对数据库的读取和更新操作。喜欢   MVTO,要对元组A执行读取操作,首先是DBMS   根据begin-ts和end-ts搜索可见版本的Ax   领域。如果未获取T的写锁,则允许T更新Ax版本。   在多版本设置中,如果交易更​​新了版本   Bx,然后DBMS创建版本Bx + 1,其txn-id设置为Tid。
  当事务指示DBMS想要提交时,   然后进入验证阶段。首先,DBMS分配   交易另一个时间戳(Tcommit)来确定序列化   交易顺序。然后,DBMS确定元组是否   交易的读取集中的交易已由已经进行交易的交易更新   承诺。如果交易通过了这些检查,则它将输入   写入阶段,DBMS将安装所有新版本和新版本   他们的开头是Tcommit,结尾是INF。
  事务只能更新元组的最新版本。但是一个   事务在另一个事务之前不能读取新版本   创建它提交。读取过时版本的交易将   只发现它应该在验证阶段中止。

所以我的问题是为什么要分配第二个时间戳作为提交时间戳,而不是使用第一个时间戳? 分配第二个有什么好处?

0 个答案:

没有答案