【问题标题】:Does with(updlock) reduce deadlocks in select queries?with(updlock) 会减少选择查询中的死锁吗?
【发布时间】:2013-03-06 19:38:33
【问题描述】:

我们的 SQL Server 2008 数据库中的表可以同时写入和读取(正常隔离级别)。

一位同事想知道在针对该表的选择查询中使用 (updlock) 的查询提示是否会减少死锁,但我不太确定该怎么做。

我在想,如果正常的共享读锁会导致超时,那么在这种情况下,更新锁肯定也会导致死锁吗?!还是我错过了什么?

谢谢大家!

【问题讨论】:

  • 长块死锁之间有一个重要的区别。我可以想象添加with (updlock) 可能会导致死锁并防止死锁的场景......需要回答一些问题才能为您提供除推测之外的任何其他内容,以及最简单的方法来回答这些问题是显示死锁中涉及的 Sql 命令,以及这些表上的任何索引。

标签: sql-server-2008 deadlock locks query-hints


【解决方案1】:

更新锁与共享锁不兼容,因此在某些情况下基本上可以同时运行更少的 SELECT 语句。我相信这对您的问题没有帮助。

您是否考虑过启用读取已提交快照 (RCSI) 数据库选项?这是您首先要在测试环境中测试的内容。它给 tempdb 带来了一些用于版本存储的开销,但由于 RSCI 的乐观锁定,您的数据库吞吐量应该会更高。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多