2
SQL Server索引更新死锁
我有2个查询,当同时运行时会导致死锁。 查询1-更新索引(index1)中包含的列: update table1 set column1 = value1 where id = @Id 在table1上获取X-Lock,然后在index1上尝试X-Lock。 查询2: select columnx, columny, etc from table1 where {some condition} 在index1上获取S-Lock,然后在table1上尝试S-Lock。 有没有办法在保持相同查询的同时防止死锁?例如,我是否可以在更新之前以某种方式对更新事务中的索引进行X锁定,以确保表和索引访问的顺序相同-这样可以防止死锁? 隔离级别为“已提交读”。已为索引启用行锁和页锁。同一条记录可能同时参与这两个查询-从死锁图中我看不出来,因为它没有显示参数。 死锁图