【问题标题】:T-SQL Deadlocks when I query SELECT in autocommit off mode in SQL Server Management Studio在 SQL Server Management Studio 中以自动提交关闭模式查询 SELECT 时出现 T-SQL 死锁
【发布时间】:2015-01-29 07:49:18
【问题描述】:

我曾经对每 5 分钟主动更新一次的生产数据库运行非常“选择”的查询。每当我运行“SELECT”查询时,数据库就会出现死锁和连接超时。

我想知道为什么即使是简单的“SELECT”查询也会导致这些死锁; 'SELECT' 查询的执行时间不到一秒,结果集的数量只有一个。

在我运行查询并在 SQL 管理工作室中以“自动提交”关闭模式获得结果集之后,我通常没有提交。会不会导致死锁?

您的回答或解释将不胜感激。

提前谢谢大家!

【问题讨论】:

  • 嗯,这是糟糕的数据库设计。这只是意味着当通常的数据库查询(在事务范围内完成)没有死锁时,您很幸运。你可能想做一些锁审计:)

标签: sql-server tsql deadlock database-deadlocks


【解决方案1】:

请参阅deadlocking 上的这篇 Technet 文章 - 它使用只有 2 行的单个表的情况来讨论如何创建死锁。一旦进入具有更多表、连接和代码路径的实际系统,预测和防止死锁就会变得更加困难。

如果您“只是”执行 SELECT,那么为什么要关闭自动提交模式?这将持有任何锁并阻止其他连接,直到您提交/回滚。

【讨论】:

  • 你的解释完全有道理。我将打开自动提交模式。 :) 我会为此祈祷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多