由于索引导致SQL死锁

时间:2017-02-17 16:29:25

标签: sql-server locking deadlock

插件和选择

之间存在死锁问题

连接A:

  1. 在表格MyTable(记录中的X锁定)
  2. 中插入记录
  3. 更新非聚集索引MyTable_Index(请求索引条目上的X锁定)
  4. 连接B:

    1. 使用MyTable_Index查找具有特定Destination(MyTable列)的记录(S锁定索引条目)
    2. 通过索引返回(SELECT)MyTable记录。 (这是一个子顺序更新记录的子查询)(请求S锁定记录)
    3. 因此,当A插入(步骤1)并且B使用索引(步骤1)时,似乎发生死锁。连接A和B都使用ROWLOCK提示。

      有没有办法为连接B指定不应该锁定MyTable_Index,比如表的NOLOCK,但现在是索引?

      或其他一些聪明的技巧(除了删除索引或使用聚簇索引)?

      期待一些智能解决方案: - )

0 个答案:

没有答案