SqlServer 并发事务:死锁跟踪(三)5种跟踪死锁的方法总结

SqlServer 并发事务:死锁跟踪(三)5种跟踪死锁的方法总结,第1张

概述方法一:Windows 性能计数器监控 命令行输入:perfmon  或者 perfmon /sys 选择实例:SQL Server :Locks \\  Number of DeadLocks/sec \\ _Total   (只能知道什么时候发生死锁,看不得具体死锁信息) 实时查看: 作业记录到文件:(可跟踪一段时间,耗系统性能很小) 方法二:打开profiler跟踪事件 locks: dea

方法一: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=ONGO--	将消息传递到数据库中的正确队列--	DROP SERVICE DeadlockServiceCREATE SERVICE DeadlockServiceON QUEUE DeadlockQueue([http://schemas.microsoft.com/sql/Notifications/PostEventNotification])GO--	创建可向服务发送有关数据库或服务器事件的信息的对象--	DROP EVENT NOTIFICATION CaptureDeadlocks ON SERVERCREATE EVENT NOTIFICATION CaptureDeadlocksON SERVERWITH FAN_INFOR DEADLOCK_GRAPHTO SERVICE 'DeadlockService','current database' ;GO--[此时发生死锁]--	查询XML格式的死锁信息SELECT CAST(message_body AS XML) AS message_body FROM DeadlockQueue






SqlServer 并发事务:死锁跟踪(二)确定死锁锁定的资源

SqlServer 并发事务:死锁跟踪(一)

总结

以上是内存溢出为你收集整理的SqlServer 并发事务:死锁跟踪(三)5种跟踪死锁的方法总结全部内容,希望文章能够帮你解决SqlServer 并发事务:死锁跟踪(三)5种跟踪死锁的方法总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1160586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存