阅读 IBM 网站HERE上发布的较早的 CouchDB 概述,我惊讶地发现以下内容:
大多数现代数据库已经开始从锁定机制转移到 MVCC,包括 Oracle(自 V7 起)、MySQL(与 InnoDB 一起使用时)和 Microsoft® SQL Server 2005 及更高版本。
我目前使用 SQL Server 相当多(V2012)并且从未考虑过可能存在任何形式的 MVCC。我之前也在with (tablock, holdlock)
存储过程中使用过。
SQL Server 是否真的在任何地方实现了 MVCC,这与是否实现的想法相一致with (tablock, holdlock)
?
是的,从 SQL Server 2005 开始。
SQL Server 术语是“行版本控制隔离级别”。请参阅从Locking 和 Row Versioning开始的产品文档树。请特别注意,有两个单独的“MVCC”实现,使用行版本控制(RCSI) 和快照隔离(SI)的读取提交隔离。
使用提示组合可以序列化对整个表的访问。它是可用的最少并发选项,因此使用这些提示应该非常少见。是否可以用 RCSI 或 SI 隔离代替特定用途取决于具体情况。如果您希望我们详细讨论该方面,您可以通过具体示例提出后续问题。
您可能还想阅读我关于 SQL Server 隔离级别的系列文章。