Sql server 索引导致的SQL死锁
插入和选择之间存在死锁问题 连接A:Sql server 索引导致的SQL死锁,sql-server,locking,deadlock,Sql Server,Locking,Deadlock,插入和选择之间存在死锁问题 连接A: 在表MyTable中插入记录(记录上的X锁) 更新非聚集索引MyTable_索引(请求索引项上的X锁) 连接B: 使用MyTable_索引查找具有特定目标(MyTable列)的记录(索引项上的S锁) 通过索引返回(选择)MyTable记录。(这是随后更新记录的子查询)(请求S对记录的锁定) 因此,当A插入(步骤1)和B使用索引(步骤1)时,似乎会发生死锁。连接A和B都使用ROWLOCK提示 有没有一种方法可以为连接B指定MyTable_索引不应该被锁定,就像
期待一些智能解决方案:-)查看此问题和提供的答案:这些是在事务中运行的吗?如果是,事务隔离级别是什么?您是否查看过
serializable
或使用updlock
和/或holdlock
?在这里向我们展示一些实际的代码会有很大帮助。我会启动一个SQL跟踪(使用SQL Profiler)或一个扩展的事件会话来截获[xml]死锁图事件。然后我将匿名化并在这里发布xml。这应该是我们调试此类异常的第一步