对于将默认事务隔离级别从READ_COMMITTED_SNAPSHOT更改为READ_COMMITTED,我有什么期望?

时间:2013-01-10 12:37:10

标签: sql sql-server azure-sql-database isolation-level transaction-isolation

在SQL Server中,默认隔离级别为READ_COMMITTED,但在SQL Azure中,默认级别为READ_COMMITTED_SNAPSHOT

假设我将SQL Azure服务器中的默认级别更改为READ_COMMITTED_SNAPSHOT(使用SET TRANSACTION ISOLATION LEVEL),以使其行为类似于SQL Server。

我应该期待什么负面影响?

1 个答案:

答案 0 :(得分:3)

您的应用程序逻辑可能会中断。真的,这很大程度上取决于你在做什么。总的来说,一些指示:

  • 真正的SNAPSHOT比RCSI少得多'惊喜'。由于“快照”行版本在真正的SNAPSHOT中明确定义为事务开始的时刻,因此它不会遇到在同一事务中看到不同行版本的RCSI问题(这会导致非常微妙且难以理解的问题)< / LI>
  • 您将获得更新冲突而不是死锁,但一个完全'而不是'。存在一些差异,并且应用程序可能不会期望新的错误代码3960。

我建议过Implementing Snapshot or Read Committed Snapshot Isolation in SQL Server: A Guide