SQL Server死锁日志分析(打开1204标记)

使用跟踪标记 1204

--打开跟踪标记
DBCC TRACEON (1204,-1)

--关闭跟踪标记
DBCC TRACEOFF (1204,-1)


处于死锁状态时,跟踪标记 1204 在等待的线程、存在等待线程的资源和控制这些资源的线程间画出相关循环。

跟踪标记 1204 报告中的术语
尽管根据所涉及的资源,跟踪标记 1204 会返回不同信息,但是报告通常会包含如下术语:

Node 节点:x
在死锁的链中表示项目号 (x)。

List 列表
锁的所有者可能是如下列表中的一部分:授权、转换和等待。

Grant List 授权列表
列举资源的当前所有者。

转换列表
列举要把锁转换到较高级别的当前所有者。

Wait List 等待列表
列举当前新锁对资源的请求。
SPID:x ECID:x

在并行进程情况下,标识系统进程 ID 线程。条目 SPID x ECID 0 表示主线程,而 SPID x ECID > 0 表示同一 SPID 的子线程。

Statement Type 语句类型
为 SELECT, INSERT, UPDATE 或 DELETE 语句,线程在这些语句上具有权限。

行号
发生死锁时,列出当前正在执行的批处理语句行。

Input Buf
列出当前批处理中所有的语句。

Mode
为线程请求、授权或等待的特定资源,指定锁的类型。模式可以是 IS(意向共享)、S(共享)、U(更新)、IX(意向独占)、SIX(与意向独占共享)和 X(独占)。有关更多信息,请参见SQL Server 中的锁定介绍。

RID
在对锁进行控制或请求的表中,标识单个行。

RID 在跟踪标记 1204 中,表示为 RID:db_id:file_id:page_no:row_no;例如,RID: 1:1:1253:0。

TAB
标识对锁进行控制或请求的表。
TAB 在跟踪标记 1204 中表示为 TAB:db_id:object_id;例如,TAB: 2:2009058193。

KEY
在对锁进行控制或请求的索引内,标识键范围。
KEY 在跟踪标记 1204中表示为 KEY:db_id:object_id:index_id;例如,KEY: 2:1977058079:1。

PAG
标识对锁进行控制或请求的页资源。
PAG 在跟踪标记 1204 中表示为 PAG:db_id:file_id:page_no;例如 PAG: 7:1:168。

EXT
标识扩展盘区结构。
EXT 在跟踪标记 1204 中表示为 EXT:db_id:file_id:extent_no;例如,EXT: 7:1:9。

DB
标识数据库锁。
DB 在跟踪标记 1204 中表示为如下方式之一:

DB:db_id
DB:db_id[BULK-OP-DB] 标识了备份数据库占用的数据库锁。
DB:db_id[BULK-OP-LOG] 标识了特定数据库的备份日志占用的锁。
IND

标识在索引资源上创建的索引占用的锁。

IND 在跟踪标记 1204 中表示为如下方式之一:
IND:db_id:object_id:index_id
IND:db_id:object_id:index_id[INDEX_ID] 表明锁在索引 ID 上。
IND:db_id:object_id:index_id[INDEX_NAME] 表明锁在索引名上。

APP
标识应用程序资源占用的锁。
APP 在跟踪标记 1204 中表示为APP:lock_resource;例如,APP:Formf370f478。

当 SQL Server 选取应用程序资源为死锁牺牲品时,该应用程序资源的所有者将不会得到先前描述的错误信息。相反,当 sp_getapplock 存储过程在该应用程序资源上执行时,应用程序所有者会获得返回代码"-3"。有关信息,请参见 sp_getapplock。

Victim Resource Owner
将 SQL Server 选择的特殊线程指定为中断死锁循环的牺牲品。选中的线程(以 SPID x ECID 0 标识)和所有现有子线程(以 SPID x ECID > 0 标识)将被终止。

下一个分支
表示来自死锁循环中涉及的相同 SPID 的两个或多个子线程。

当死锁涉及到平行线程时,各种子线程可能会在通讯缓冲区发生阻塞,而且一个线程会在等待别的子线程中结束。只有所有的其它线程都涉及死锁,才会发生死锁状态。下一个分支表示跟踪其它路径的死锁链。

根据PAG锁要找到相关数据库表的方法:

DBCC TRACEON (3604)
DBCC PAGE (db_id,file_id,page_no)
DBCC TRACEOFF (3604)

 

参考:

http://fengyu.china.com/sqlserver_deadlock.htm

 

http://blog.struct.cn/2007/11/29/%E4%BD%BF%E7%94%A8sql-server-profiler%E5%B7%A5%E5%85%B7%E4%BC%98%E5%8C%96sql%E6%9F%A5%E8%AF%A2/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值