T-SQL 当我在 SQL Server Management Studio 中以自动提交关闭模式查询 SELECT 时出现死锁

T-SQL Deadlocks when I query SELECT in autocommit off mode in SQL Server Management Studio

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

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

在 运行 查询并在 'autocommit' 关闭模式下在 SQL management studio 中获得结果集后,我经常没有提交。会导致死锁吗?

非常感谢您的回答或解释。

提前谢谢大家!

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

如果您正在 'just' 执行 SELECT 那么为什么要关闭自动提交模式?这将持有所有锁并阻止其他连接,直到您 commit/rollback.