首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是多版本并发控制(MVCC),谁支持它?

什么是多版本并发控制(MVCC),谁支持它?
EN

Stack Overflow用户
提问于 2008-08-26 07:04:21
回答 15查看 36.2K关注 0票数 48

最近,Jeff对与读取相关的数据库死锁的问题进行了已发布处理。多版本并发控制(MVCC)声称解决了这个问题。它是什么,什么数据库支持它?

更新:这些支持它(哪些其他?)

  • 甲骨文
  • postgresql
EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2008-08-26 08:04:44

Oracle在很久以前就有了一个优秀的多版本控制系统(至少从oracle 8.0开始)。

以下几点应该会有帮助。

  1. 用户A启动事务,并在时间上用某个值更新1000行T1
  2. 用户B在时间上读取相同的1000行T2。
  3. 用户A用值Y(原始值X)更新行543
  4. 用户B到达第543行,并发现事务自时间T1开始运行。
  5. 数据库从日志中返回未经修改的记录。返回的值是在时小于或等于T2时提交的值。
  6. 如果无法从重做日志中撤回记录,则意味着数据库没有正确设置。需要为日志分配更多的空间。
  7. 这样就实现了读取的一致性。对于事务的开始时间,返回的结果总是相同的。因此,在事务中,读取一致性得到了实现。

我试图用最简单的术语来解释possible...there对于数据库中的多版本控制是非常重要的。

票数 42
EN

Stack Overflow用户

发布于 2008-08-26 07:15:58

PostgreSQL的多版本并发控制

以及这篇文章,它提供了MVCC在发出INSERT、UPDATE和DELETE语句时如何工作的图表。

票数 10
EN

Stack Overflow用户

发布于 2009-06-04 17:53:34

以下是MVCC的实现:

Server 2005 (非默认值,SET READ_COMMITTED_SNAPSHOT ON)

  • http://msdn.microsoft.com/en-us/library/ms345124.aspx

Oracle (自第8版起)

MySQL 5(只包含InnoDB表)

PostgreSQL

火鸟

Informix

我很确定Sybase和IBM /LUW没有DB2的实现

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档