我知道SQL Server 2000有一个悲观的并发模型。并且在SQL Server 2005中添加了乐观模型。那么如何判断我是在SQL Server 2005和2008中使用悲观并发模型还是乐观模型?
感谢。
答案 0 :(得分:2)
SQL 2005(和2008)引入了SNAPSHOT隔离。这是转向乐观并发的方法。看看Transaction Isolation and the New Snapshot Isolation Level article:
Isolation level Dirty Reads Non-repeatable Phantom reads Concurrency
reads control
READ UNCOMMITTED Yes Yes Yes Pessimistic
READ COMMITTED No Yes Yes Pessimistic
(with locking)
READ COMMITTED No Yes Yes Optimistic
(with snapshot)
REPEATABLE READ No No Yes Pessimistic
SNAPSHOT No No No Optimistic
SERIALIZABLE No No No Pessimistic
答案 1 :(得分:0)
阅读微软的一些文章和文件后。我得出以下结论。
在SQL Server 2005 +
上但是,我还需要确认。另外,如果有一些代码来测试并发模型会很棒。
答案 2 :(得分:0)
基本上:
悲观:你只为你锁定记录,直到你完成它。因此,请阅读已提交事务隔离级别。 (如你所说,并非未提交)
乐观并发控制的工作原理是多个用户之间的资源冲突不太可能,并且它允许在不锁定任何资源的情况下执行事务。仅在事务尝试更改数据时才检查资源。这确定是否发生了任何冲突(例如,通过检查版本号)。如果发生冲突,应用程序必须读取数据并再次尝试更改。 产品不提供乐观并发控制,但您可以通过跟踪数据库访问手动将其构建到应用程序中。 (Source)