前言:

  作为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