我知道 SQL Server 2000 有一个悲观的并发模型。而乐观模型是在SQL Server 2005 中添加的。那么我如何判断我是在使用悲观并发模型还是在SQL Server 2005 和2008 中使用乐观模型呢?
谢谢。
我知道 SQL Server 2000 有一个悲观的并发模型。而乐观模型是在SQL Server 2005 中添加的。那么我如何判断我是在使用悲观并发模型还是在SQL Server 2005 和2008 中使用乐观模型呢?
谢谢。
SQL 2005(和 2008)引入了 SNAPSHOT 隔离。这是转向乐观并发的方法。查看事务隔离和新的快照隔离级别文章:
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
基本上:
悲观:你只为你锁定记录,直到你完成它。所以读取提交的事务隔离级别。(不是你说的不承诺)
乐观并发控制假设多个用户之间的资源冲突不太可能发生,并且它允许事务在不锁定任何资源的情况下执行。仅当事务尝试更改数据时才检查资源。这确定是否发生了任何冲突(例如,通过检查版本号)。如果发生冲突,应用程序必须读取数据并再次尝试更改。该产品不提供乐观并发控制,但您可以通过跟踪数据库访问手动将其构建到您的应用程序中。(来源)
在阅读了微软的一些文章和文档之后。我得到以下结论。
在 SQL Server 2005+ 上
但是,我仍然需要确认。此外,如果有一些代码可以测试并发模型,那就太好了。