【发布时间】:2011-07-21 19:10:21
【问题描述】:
据我了解,SQL 死锁发生在 SPID 忙于处理另一个查询并且因为它现在很忙而无法运行另一个查询时。 SQL Server 从请求的资源中“随机”选择一个查询来死锁,然后失败,抛出异常。
我有一个运行大约 40 个实例的应用程序和一个后端 Windows 服务,所有这些都在访问同一个数据库。我希望减少死锁,以便增加可以同时运行的线程数。
- 为什么 SQL Server 不能将新查询排入队列并在有时间且资源可用时运行它?我正在做的大部分事情有时会等待几秒钟。
- 有没有一种方法可以全局设置事务隔离级别,而不必在每个新连接/会话开始时指定它?
【问题讨论】:
-
您对
deadlock的定义不正确。通常 SQL Server 确实让其他请求等待。当它因为检测到死锁条件而终止查询时,是因为给定的一组查询无法完成(永远)并且必须有人输。我认为,如果您稍微了解一下什么是死锁,您将能够更好地从更好的问题中获得价值 -
“据我所知” ...该段的其余部分非常不正确。
-
死锁与服务器太忙而无法处理请求无关。我建议你要么改写你的问题,要么去看看到底什么是死锁。
-
你对死锁的理解是错误的,但我认为你有一个很好的问题。
-
lmao @heisenberg 会在 2011 年回到 HAM ......没关系 tsilb 我赞成你非常不正确的问题。我的意思是说真的,谁不知道什么是死锁? 谷歌搜索“什么是死锁”
标签: sql sql-server deadlock