指定当前会话与其他会话发生死锁时继续处理的相对重要性。
当两个会话同时等待访问由其他会话锁定的资源时,便会发生死锁。 当 SQL Server 实例检测到两个会话发生死锁时,将选择其中一个会话作为死锁牺牲品来解决死锁。 此牺牲品的当前事务将回滚,且死锁错误消息 1205 返回客户端。 这样可释放由该会话所控制的所有锁,从而允许其他会话继续进行。
将哪个会话选为死锁牺牲品取决于每个会话的死锁优先级:
-
如果两个会话的死锁优先级相同,则 SQL Server 实例将回滚开销较低的会话选为死锁牺牲品。 例如,如果两个会话都将其死锁优先级设置为 HIGH,则此实例便将它估计回滚开销较低的会话选为牺牲品。
-
如果会话的死锁优先级不同,则将死锁优先级最低的会话选为死锁牺牲品。
SET DEADLOCK_PRIORITY 是在执行或运行时设置,而不是在分析时设置。
本文介绍了在SQL Server 2008至当前版本以及Windows Azure SQL Database中,如何通过设置死锁优先级来指定当前会话与其他会话发生死锁时的相对重要性,从而避免不必要的事务回滚。
565

被折叠的 条评论
为什么被折叠?



