我们的环境有一个僵局问题。我们需要选择一些行,然后更新它们。
这些查询非常频繁,因此我们在select语句中使用行锁和updlock提示。
这些查询有时会导致死锁。
我们认为原因是两个查询开始在同一索引上锁定相同的行,但以不同的索引“方向”锁定。
因此,当相同的查询同时运行时,它们有时可以彼此锁定。
这个假设有意义吗?
如果是,我们能做些什么来强制执行“行锁锁定命令”吗?
发布于 2015-12-17 15:44:24
遵循微软规定的检测和终止死锁文章。您永远不应该“猜测”死锁的原因,否则您将猜测解决方案。要执行的简短步骤列表是启用跟踪标志1204和1222。输出将显式地为您提供实际涉及的资源ID。可能是外键约束,索引页。只有知道这一点,才能针对查询、索引甚至隔离级别试图修复的内容。
https://dba.stackexchange.com/questions/123915
复制相似问题