【问题标题】:What do I expect from changing default transaction isolation level from READ_COMMITTED_SNAPSHOT to READ_COMMITTED?将默认事务隔离级别从 READ_COMMITTED_SNAPSHOT 更改为 READ_COMMITTED 有什么期望?
【发布时间】:2013-01-10 12:37:09
【问题描述】:

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

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

我应该期待什么负面后果?

【问题讨论】:

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


【解决方案1】:

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

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

我会推荐使用Implementing Snapshot or Read Committed Snapshot Isolation in SQL Server: A Guide

【讨论】:

  • 重点是不能在SQL Azure中改变这个设置
  • @twoleggedhorse:实际上你可以。 social.technet.microsoft.com/wiki/contents/articles/…
  • @twoleggedhorse:实际上,你是对的。我已经阅读了 OP(并回答了这样的......)作为“从 RCSI 更改为 SNAPSHOT”,这是可能的。在 Azure 中无法从 RCSI 更改为“READ COMMITTED”。
  • +1 很少有人承认我是对的——我会喜欢这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2023-03-14
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多