SqlServer 并发事务:死锁跟踪(三)5种跟踪死锁的方法总结
发布时间:2020-12-12 12:43:52 所属栏目:MsSql教程 来源:网络整理
导读:方法一:Windows 性能计数器监控 命令行输入:perfmon ?或者 perfmon /sys 选择实例:SQL Server :Locks ?Number of DeadLocks/sec _Total? ?(只能知道什么时候发生死锁,看不得具体死锁信息) 实时查看: 作业记录到文件:(可跟踪一段时间,耗系统
方法一:Windows 性能计数器监控 命令行输入:perfmon ?或者 perfmon /sys 选择实例:SQL Server :Locks ?Number of DeadLocks/sec _Total? ?(只能知道什么时候发生死锁,看不得具体死锁信息) 实时查看: 作业记录到文件:(可跟踪一段时间,耗系统性能很小) 方法二:打开profiler跟踪事件 locks: deadlock graph (生成的死锁图可以拷贝出来XML格式的死锁信息) 方法三:打开1222或者1204标志记录死锁,在sqlserver日志查看 DBCC TRACEON(1222,-1) DBCC TRACEON(1204,-1) 如果日志太多就不好找了,这时可以用系统扩展存储过程筛选! --查看是否死锁,确定死锁的的时间 exec xp_readerrorlog 0,1,'deadlock victim',NULL,'2015-01-01','2015-01-10','ASC' --按时间查看sqlserver日志,即为死锁信息 exec xp_readerrorlog 0,'2015-01-07 22:13:10','2015-01-07 22:13:11','ASC' 方法四:系统扩展事件会话system_health自动记录 --扩展事件会话的信息 select * from sys.dm_xe_sessions where name = 'system_health' SELECT xed.value('@timestamp','datetime')as Creation_Date,xed.query('.')AS Extend_Event FROM ( SELECT CAST([target_data] AS XML)AS Target_Data FROM sys.dm_xe_session_targets AS xt INNER JOIN sys.dm_xe_sessions AS xs ON xs.address= xt.event_session_address WHERE xs.name=N'system_health' AND xt.target_name=N'ring_buffer' ) AS XML_Data CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]')AS XEventData(xed) ORDER BY Creation_Date DESC 方法五:Service Broker Event Notifications USE msdb; -- 队列用来保存数据 -- DROP QUEUE DeadlockQueue CREATE QUEUE DeadlockQueue WITH STATUS=ON GO -- 将消息传递到数据库中的正确队列 -- DROP SERVICE DeadlockService CREATE SERVICE DeadlockService ON QUEUE DeadlockQueue([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]) GO -- 创建可向服务发送有关数据库或服务器事件的信息的对象 -- DROP EVENT NOTIFICATION CaptureDeadlocks ON SERVER CREATE EVENT NOTIFICATION CaptureDeadlocks ON SERVER WITH FAN_IN FOR DEADLOCK_GRAPH TO SERVICE 'DeadlockService','current database' ; GO --[此时发生死锁] -- 查询XML格式的死锁信息 SELECT CAST(message_body AS XML) AS message_body FROM DeadlockQueue SqlServer 并发事务:死锁跟踪(二)确定死锁锁定的资源 SqlServer 并发事务:死锁跟踪(一) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |