在 SQL Server 中,默认隔离级别是 READ_COMMITTED
,但在 SQL Azure 中,默认级别是 READ_COMMITTED_SNAPSHOT
。
假设我将我的 SQL Azure 服务器中的默认级别更改为 READ_COMMITTED_SNAPSHOT
(使用 SET TRANSACTION ISOLATION LEVEL
),以便它的行为类似于 SQL Server。
我应该预料到什么负面后果?
最佳答案
您的应用程序逻辑可能会中断。真的,这在很大程度上取决于你在做什么。总的来说,一些建议:
- 与 RCSI 相比,True SNAPSHOT 的“惊喜”要少得多。由于“快照”行版本在事务开始时在真实快照中明确定义,因此它不会遇到在同一事务中看到不同行版本的 RCSI 问题(这会导致非常微妙且难以理解的问题)
- 您将得到更新冲突而不是死锁,但是一个恰好“而不是”。存在一些差异,应用可能不会预期出现新的错误代码 3960。
我建议查看 Implementing Snapshot or Read Committed Snapshot Isolation in SQL Server: A Guide .
关于sql - 将默认事务隔离级别从 READ_COMMITTED_SNAPSHOT 更改为 READ_COMMITTED 会有什么期望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258125/