sql - 将默认事务隔离级别从 READ_COMMITTED_SNAPSHOT 更改为 READ_COMMITTED 会有什么期望?

标签 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。

我应该预料到什么负面后果?

最佳答案

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

  • 与 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/

相关文章:

.net - 如何创建嵌套 :many relationships in Entity Framework?

sql - Pyodbc 和 Access 的查询参数包含句点

mysql - 如何在MySql数据库中选择几条记录进行编辑

php - SQL语法只有两种类型的引号问题?

mysql - 需要用两个不同的 where 子句返回两组数据

python - Python 的 SQLAlchemy 是否支持服务器端游标(对于 MSSQL)?

SQL从临时表插入表,并将输出插入临时表

entity-framework - 连接到 sql azure 的辅助角色随机错误

c# - "where xxx is not null and xxx/2 < 4": "is not null" seems to be executed after my operation

使用弹性池的 Azure DB 定价