Closed. This question is off-topic。它当前不接受答案。












想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic

已关闭8年。



Improve this question




最近,Jeff遇到了与读取相关的数据库死锁的麻烦,因此有了postedMultiversion Concurrency Control (MVCC)声称可以解决此问题。它是什么,什么数据库支持它?

更新:这些都支持它(还有哪些?)
  • 甲骨文
  • PostgreSQL
  • 最佳答案

    从很长时间以来(至少从oracle 8.0起),Oracle就有了一个出色的多版本控制系统。

    以下应该会有所帮助。

  • 用户A开始事务,并在时间T1处更新具有某些值的1000行
  • 用户B在时间T2读取相同的1000行。
  • 用户A使用值Y(原始值X)更新行543
  • 用户B到达行543,并发现自时间T1起事务正在运行。
  • 数据库从日志中返回未修改的记录。返回的值是在小于或等于T2时提交的值。
  • 如果无法从重做日志中检索记录,则表示数据库设置不正确。需要为日志分配更多空间。
  • 这样就可以实现读取一致性。对于事务的开始时间,返回的结果始终相同。因此,在事务中可以实现读取一致性。

  • 我试图用最简单的术语来解释...数据库中的多版本化有很多。

    07-24 09:34