【问题标题】:SQL Server Deadlock with Transaction Isolation Level Read UncommittedSQL Server 死锁与事务隔离级别读取未提交
【发布时间】:2015-04-15 20:31:11
【问题描述】:

即使我将事务级别设置为未提交,我也会遇到这种死锁。有什么我做错了吗?我想我应该在这里得到一个肮脏的阅读。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

   SELECT 
            DISTINCT 
            venueCourt.Id, 

错误

System.Data.SqlClient.SqlException: Transaction (Process ID 73) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

【问题讨论】:

  • 你能分享更多的查询吗?我想知道是否还有其他影响它。此外,如果它在存储过程或触发器中运行,则隔离级别是临时的。
  • 请实际执行计划。图像足以开始。
  • SP,以及查询中的大量连接

标签: sql sql-server transactions isolation-level database-deadlocks


【解决方案1】:

如果查询对您进行并行处理,您可能会遇到死锁......虽然我会对这样一个简单的查询感到非常惊讶。

尝试在查询结束时添加 OPTION (MAXDOP 1)。

【讨论】:

  • 好吧,查询没那么简单,相当复杂,我只是在它的顶部添加了它
  • 你能解释一下 OPTION (MAXDOP 1) 会做什么吗?
  • 它强制 SQL Server 只使用一个 CPU 核心(无并行性)。如果那是导致它的原因,应该清除你的僵局。
  • 它会只为那个查询做吗?出于性能原因,如果可能的话,我想为其他查询保持并行性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
相关资源
最近更新 更多