如何监控死锁?

【1】windows性能监控器(Performance Monitor)

  windows性能监控器(Performance Monitor)

  Object:SQLServer:Locks

  Counter:Number of Deadlocks/sec

  Instance:_Total

  

--查看自上次启动服务,死锁发生的次数
select * from sys.dm_os_performance_counters
where counter_name like '%dead%'

【2】开启跟踪标识记录死锁信息到错误日志(跟踪标识集合)

相关生产实践引用参考:如何捕获和记录SQL死锁

DBCC TRACEON (3605,1204,1222,-1)  3605 将DBCC的结果输出到错误日志。
1204 返回参与死锁的锁的资源和类型,以及受影响的当前命令。
1222 返回参与死锁的锁的资源和类型,以及使用了不符合任何 XSD 架构的 XML 格式的受影响的当前命令(比1204更进一步,SQL 2005及以上可用)。
-1 以全局方式打开指定的跟踪标记。以上跟踪标志作用域都是全局,即在SQL Server运行过程中,会一直发挥作用,直到SQL Server重启如果要确保SQL Server在重启后自动开启这些标志,可以在SQL Server服务启动选项中,使用 /T 启动选项指定跟踪标志在启动期间设置为开。(位于SQL Server配置管理器->SQL Server服务->SQL Server->属性->高级->启动参数)

【3】SQL Prifiler 和 服务端的 SQL Trace

相关生产实践引用参考:如何捕获和记录SQL死锁

Trace Event Class : Locks Event Name :  Deadlock Graph,会给出xml图示

【4】默认扩展事件(System Health)

从MSSQL 2008 开始出现的新功能。

相关生产实践引用参考:http://blog.51cto.com/ultrasql/1600372

相关参考:SQL Server扩展事件system_health会话总结

相关参考:http://www.mssqlmct.cn/t-sql/?post=95&tdsourcetag=s_pctim_aiomsg

【5】自定义跟踪死锁的扩展事件

【5.1】T-SQL实现

CREATE EVENT SESSION [DeadLock_test] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report
ADD TARGET package0.event_file(
SET filename=N'C:\sql_server\xe\DealLock_test.xel',
max_file_size=(10),
max_rollover_files=(4)    --启用文件滚动存储的最大文件数
)
WITH (MAX_MEMORY=4096 KB, --最大内存EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,--事件保留模式:ALLOW_SINGLE_EVENT_LOSS/ALLOW_MULTIPLE_EVENT_LOSS/NO_EVENT_LOSSMAX_DISPATCH_LATENCY=30 SECONDS,--最大调度滞后事件,单位秒。0秒为无限制。MAX_EVENT_SIZE=0 KB,     --最大事件大小MEMORY_PARTITION_MODE=NONE, --内存分区模式:无(NONE)/每个节点(PER_NODE)/每个cpu(PER_CPU)TRACK_CAUSALITY=OFF, --因果关系跟踪,跟踪事件彼此相关的方式STARTUP_STATE=ON  --服务器启动时是否启动事件会话
)
GOALTER EVENT SESSION [DeadLock_test] ON SERVER STATE=START
GO--查看
select * from sys.dm_xe_sessions

-- 扩展事件元数据信息
SELECT * FROM sys.dm_xe_packages
SELECT * FROM sys.dm_xe_objects
SELECT * FROM sys.dm_xe_map_values
SELECT * FROM sys.dm_xe_object_columns
SELECT * FROM sys.dm_xe_session_event_actions
SELECT * FROM sys.dm_xe_sessions
SELECT * FROM sys.dm_xe_session_events
SELECT * FROM sys.dm_xe_session_targets
SELECT * FROM sys.dm_xe_session_object_columns

-- 当前扩展事件信息
SELECT * FROM sys.server_event_notifications
SELECT * FROM sys.server_event_sessions
SELECT * FROM sys.server_event_session_events
SELECT * FROM sys.server_event_session_actions
SELECT * FROM sys.server_event_session_targets
SELECT * FROM sys.server_event_session_fields
SELECT * FROM master.sys.fn_MSxe_read_event_stream (N'deadlock*.xel', 1)
SELECT * FROM master.sys.fn_xe_file_target_read_file(N'deadlock*.xel', NULL, NULL, NULL)

SELECT object_name as event,convert(xml, event_data) as xml_data
FROM master.sys.fn_xe_file_target_read_file(N'D:\deadlock*.xel', NULL, NULL, NULL)

【5.2】基于SSMS的GUI实现

  (1)实例-》管理-》扩展事件-》右击会话-》新建会话向导

    

  (2)输入扩展事件会话名称 -》下一步

    

  

  (3)不使用模板 -》下一步

    

  (4)选择死锁事件 -》放到右边-》下一步

      

  (5)捕获全局字段不填写-》下一步

    

  (6)设置会话事件筛选器忽略 -》下一步

    

  (7)保存到文件 -》下一步

    

  (8)可以查看设置的摘要信息,以及生成脚本 -》完成

    

  (9)查看创建脚本与启动,右击该会话-》启动会话。    脚本:右击该会话-》编写会话脚本为-》create

    

 (10)模拟死锁后查看,双击会话名称打开如下图

    

    

【5.3】深入进阶

  【5.3.1】Lock:Deadlock

    这个事件可以用来验证死锁牺牲品。这个时间说明什么时候请求需要一个锁,但被取消作为一个死锁牺牲品

  【5.3.2】Lock:Deadlock chain

    这个事件类用于监控死锁状态。但存在一个死锁时该事件被处罚。

    通过在实例级别监控这个事件,我们能够识别哪些对象处于死锁中,是否在应用程序中存在因死锁导致的性能问题。

  【5.3.3】操作演示

    管理-》扩展事件-》会话-》找到我们上面创建的 Deallock_monitor-》右击属性-》加上【5.3.1】~【5.3.2】的事件

       

    再次尝试死锁测试,结果信息

      

    

转载于:https://www.cnblogs.com/gered/p/10969845.html

【监控笔记】【2.2】扩展事件——死锁监控相关推荐

  1. Windows事件日志监控

    大多数数据泄露属内部人员而为,但各企业在监控内部网络活动方面仍存在不足. 无论是大型还是小型企业,监控内部网络活动已成为其主要要求.要保护网络安全以防范泄露和威胁,各企业需要采取积极的措施来保证其网络 ...

  2. sqlserver 扩展事件监控慢sql与阻塞sql,xml格式日志解析

    零. 启用参数 SqlServer中默认blocked process收集是不开启的,可以通过以下sql查看,值为0表示未开启. exec sp_configure 'show advanced op ...

  3. Java分布式应用学习笔记08JMX规范与常用的监控场景

    转自:Java分布式应用学习笔记08JMX规范与常用的监控场景 1.  JMX规范 JMX是"Java管理扩展的"的缩写,它和其他JavaEE类似也是曾经的Sun提出的一种规范(规 ...

  4. 《手Q Android线程死锁监控与自动化分析实践》

    一.问题背景 手Q每个版本上线以后研发同学都会收到各种问题反馈.在跟进手Q内部用户反馈的问题时,发现多例问题,其表象和原因如下: 1.问题表象:"未读不消失"."图片不展 ...

  5. scroll事件实现监控滚动条并分页显示示例(zepto.js)

    scroll事件实现监控滚动条并分页显示示例(zepto.js  ) 需求:在APP落地页上的底部位置显示此前其他用户的购买记录,要求此div盒子只显示3条半,但一页有10条,div内的滑动条滑到一页 ...

  6. 监听列表事件的监控核心技术(编写代码)

    这一段代码是根据上一篇"监听列表事件的监控"所编写的,在onmousemove事件中,可以通过事件对象获取到鼠标当前的坐标点,我们该如何将坐标点转化成为元素的left和top属性值 ...

  7. sql server死锁_如何使用扩展事件和SQL Server代理自动执行SQL Server死锁收集过程

    sql server死锁 介绍 (Introduction) This article is the last one of a series in which we discussed how to ...

  8. sql活动监视器 死锁_使用system_health扩展事件监视SQL Server死锁

    sql活动监视器 死锁 Performance monitoring is a must to do the task for a DBA. You should ensure that the da ...

  9. 用 扩展事件抓取过去的死锁

    用 扩展  事件 抓取 过去的死锁 DECLARE @SessionName SysName SELECT @SessionName = 'system_health'IF OBJECT_ID('te ...

  10. linux u盘插入事件,Linux 下监控USB设备拔插事件

    Linux 下监控USB设备拔插事件 发布时间:2018-01-29 00:00, 浏览次数:1111 , 标签: Linux USB * 使用Netlink来实现 这是一个特殊的socket,可以接 ...

最新文章

  1. codevs 1002 搭桥
  2. 机器学习实验中的编程技术(part2)--numpy
  3. apache ignite_从In Memory Data Grid,Apache Ignite快速入门
  4. Unity3D-相关函数功能
  5. 微软再向开发者重申:UWP 是 PC 的最佳平台
  6. 面向对象(final/抽象类/接口/内部类)
  7. 面向对象的Oracle用法
  8. 与时间有关的10个短语
  9. android 编译c代码吗,在Android手机上编译C代码
  10. 【配送路径规划】基于matlab遗传算法求解单配送中心多客户多车辆最短路径规划问题【含Matlab源码 1602期】
  11. 高质量计算机学习网站
  12. Google浏览器Chrome,永久开启flash支持的办法
  13. html怎么设置border-radius,CSS border-radius 能做什么?
  14. [基础]tfcenter搭建个人服务器
  15. 图片转excel软件有哪些?这些软件你值得拥有
  16. 你有一份七夕赚钱指南等待签收
  17. Vue路由对象属性 .meta $route.matched
  18. [暑期实训] 任务记录 2021-06-29
  19. 博弈美业SAAS系统,美业系统源码-主要功能
  20. 一种繁体ppt转换简体的方法(简转繁同样适用)

热门文章

  1. 浏览器兼容之旅的第二站:各浏览器的Hack写法
  2. WAP入门之WMLScript与JavaScrpt的不同之处
  3. 页面动态加载android,Android APP启动页面动态加载全部权限
  4. Mac下Vmware Fusion配置虚拟机虚拟网卡并配置CENTOS上网
  5. LED的本质和发光原理是什么,彩色的LED灯是怎么做出来的
  6. Spring源码之bean的加载(一)
  7. Nginx做反向代理的问题
  8. [渝粤教育] 中国地质大学 测量学 复习题
  9. 国家开放大学2021春1040公司概论题目
  10. Windows中绕过更新直接关机