我知道SQL Server2000有一个悲观的并发模型。SQL Server2005中增加了乐观模型。那么,如何判断在SQL Server2005和2008中使用的是悲观并发模型还是乐观并发模型呢?
谢谢。
发布于 2012-05-20 00:33:29
SQL 2005 (和2008)引入了快照隔离。这是迁移到乐观并发的方法。看一看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发布于 2012-05-19 22:28:41
在阅读了来自Microsoft的一些文章和文档之后。我得到了以下结论。
在SQL Server 2005+上
不过,我还是需要确认一下。此外,如果有一些代码来测试并发模型,那就更好了。
发布于 2012-05-19 22:54:00
基本上:
悲观:您只为自己锁定记录,直到您完成它。因此读取提交的事务隔离级别。(并不像你说的那样未提交)
乐观并发控制的工作假设是多个用户之间不太可能发生资源冲突,并且它允许事务在不锁定任何资源的情况下执行。只有当事务试图更改数据时,才会检查资源。这将确定是否发生了任何冲突(例如,通过检查版本号)。如果发生冲突,应用程序必须读取数据并再次尝试更改。产品不提供乐观并发控制,但您可以通过跟踪数据库访问将其手动构建到应用程序中。(Source)
https://stackoverflow.com/questions/10631987
复制相似问题