如何监视死锁


11

您何时开始对SQL Server 2005/2008死锁进行故障排除以及如何解决?通过SQL Server性能状况警报,对象-> SQLServer:Locks,计数器->锁定等待/秒,实例:_Total,如果计数器:值超过3发出警报来打开SSMS警报。这是否是一种主动的监视方式?可接受的值是多少?我非常感谢您的帮助。谢谢!!!

Answers:



3

要做的第一件事是查看死锁图,并确切地了解发生了什么。然后,您可以考虑您的选项,这些选项通常可以归结为a)修改应用程序以按锁定对象的顺序进行标准化(例如,如果可能的话,请给出应用程序逻辑,与开发人员达成约定,始终按字母顺序锁定表)或b ),看看您是否真的在每个事务中都处于适当的隔离级别


根据stackoverflow.com/a/112256/14731,一致的锁定顺序不能防止死锁。
吉利

3

我会采用2个主要问题的服务器端自动跟踪功能:

  • 长查询(您确定的持续时间对您的环境来说很长)

  • 死锁-检查死锁图和Lock:Deadlock链

您每天都会获得跟踪文件,并且可以监视操作-查看是否某些计划的事件引起了问题。您可以在以下问题中看到有关对生产进行概要分析的更多详细信息:在生产中的数据库上使用SQL Profiler



1

系统中心操作管理器(SCOM)与SQL Server管理包可以在死锁提醒,如果你启用日志记录,消息1205可以与下面的SQL查询启用它:EXEC sp_altermessage 1205, 'WITH_LOG', 'true'

另外,请参阅对“为什么没有在死锁图中填充对象名和索引名?”的回答。对于我编写的PowerShell脚本,它将从事件缓冲区中提取死锁信息,并将死锁图编写为xdl文件,这些文件可以在SQL Management Studio 2012或更高版本中打开,也可以在记事本中查看以了解更多详细信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.