前言:
作为DBA,可能经常会遇到有同事或者客户反映经常发生死锁,影响了系统的使用。此时,你需要尽快侦测和处理这类问题。
死锁是当两个或者以上的事务互相阻塞引起的。在这种情况下两个事务会无限期地等待对方释放资源以便操作。下面是死锁的示意图:
本文将使用SQLServer Profiler来跟踪死锁。
准备工作:
为了侦测死锁,我们需要先模拟死锁。本例将使用两个不同的会话创建两个事务。
步骤:
1、打开SQLServer Profiler
2、选择【新建跟踪】,连到实例。
3、然后选择【空白】模版:
4、在【事件选择】页中,展开Locks事件,并选择以下事件:
1、Deadlock graph
2、Lock:Deadlock
3、Lock:Deadlock Chain
5、然后打开TSQL事件,并选择以下事件:
1、SQL:StmtCompleted
2、SQL:StmtStarting