SQL2005 : 如何在SQL Server Profiler (事件查看器)中 跟踪查看死锁恢复
SQL Profiler
通过 SQL Profiler 工具程序,可监控应用程序如何访问数据库引擎。普通来说,当系统性能需要优化或是应用程序对数据库访问的结果不合预期,都可以使用该工具确认视图问题所在。
新版的 SQL Profiler 除了依然可以用来监视数据库引擎正在执行的工作,更增加了获取 Analysis Services 实例运行时所发生的事件。通过新增的跟踪选项,一样可以挑选需要录制的 AS事件、数据元以及设置过滤条件。
此外可将跟踪的事件结果以 XML 格式存储,以及通过图形的方式显示与分析死锁(Deadlock)事件。我们接着就来示范一下如何在 Profiler 中以图形显示死锁的发生。
打开 SQL Server Profiler 后点选工具栏上的“新建跟踪”按钮,接着在“连接到服务器”窗口设置服务器类型为“Database Engine”、设置服务器名称以及登录服务实例的验证方式,完成后点选“连接”按钮。
接着在“跟踪属性”窗口内点选“事件选择范围”页签。在“事件选择范围”标记右下角勾取“显示所有事件”选项,接着在图2-23上方展开 Locks 事件后勾取“Deadlock graph”事件,如图2-23所示。完成后点选“执行”按钮,开始录制。
完成跟踪事件设置后,该工具程序便开始监控目前数据库引擎的运行情况。接下来,笔者使用Management Studio 工具程序,制造死锁事件做为示范。
打开 Management Studio 并在该环境内创建两条数据库连接,执行下列语法,模拟死锁环境。在工具栏上重复点选“新建查询”按钮,打开两个T-SQL 语法的编辑窗口,分别执行下列语法。
图2-23 在“跟踪属性”窗口内勾选“Deadlock graph”事件
--A 窗口
begin tran
update Tts_Hotel_Name set H_sName='eeee' where H_ID=1648
和
--B 窗口
begin tran
update Tts_Hotel_Name set H_sName='ddd' where H_ID=1647
接着,依序在A 窗口内执行以下语法:
select * from Tts_Hotel_Name where H_ID=1647
然后B 窗口内执行:
select * from Tts_Hotel_Name where H_ID=1648
你会在某条连接执行结果的窗口内发现死锁的报错信息,内容如下:
图 死锁的报错信息
当数据库内发生死锁时,Profiler 工具程序会将结果以图表方式显示,如图所示。
图 数据库引擎事件录制的结果
你可看到图形化死锁发生的原因,描述死锁锁定的资源,连接的细节,以及被牺牲掉的连接。
在上图的“跟踪属性”对话框内勾选“Deadlock graph”事件时,Profiler 会自动在“事件提取范围”标记后方增加一个“事件提取设置”页签。你可以在该页签内的“死锁 XML”项目下,设置将死锁发生的细节单独存储成 xdl 文件,供后续分析使用。或是在主菜单上选择“文件”-“导出”-“提取 SQL Server 事件”-“提取死锁事件”,一样也可以将死锁的结果存储起来。
使用Management Studio 即可打开 xdl 结果文件,如图所示。
SQL Server 2005 的 Profiler 工具可集成操作系统的性能监视器跟踪结果,通过图形化的交互引用显示,提供用户更便利的分析环境。接下来介绍如何将 Windows 系统提供的性能监视器所跟踪的计数器(Performance Counter)数值导入到 Profiler 一并分析。
首先,必须在执行图2-23的跟踪事件中,打开系统的性能监视器,同时设置并进行记录的工作。(路径为“开始”-“系统管理工具”-“性能”),接着在控制台窗格内点选“计数器日志”后,以鼠标右键点选详细数据窗格空白处,在快捷菜单内选择“新建日志设置”。如图2-27 所示:
图2-27 通过性能监视器新建记录内容
在弹出的窗口内给一个跟踪日志名称,笔者在此命名为 trace,接着在下一个窗口内点选“添加”,如图2-28所示。在这里分别选择了Processor、Memory、PhysicalDisk等对象,各对象下的计数器依序为%Processor Time、Available Mbytes、%Disk Time,整个设置如图2-28所示:
图2-28 设置需要跟踪的对象及其下的计数器
完成设置后启动该设置文件的记录工作,开始监控目前操作系统内的对象运行情形,并在启动 Profiler 记录后,执行访问 SQL Server 的应用程序,例如 Management Studio。当跟踪一段时间后点选停止按钮,默认系统会将跟踪的事件记录在C盘的 perflogs 文件夹内。
接着,将图2-23的结果保存成 xml 数据文件。然后再使用 Profiler 重新打开它,选择主菜单内“文件”-“导入性能数据”菜单。在对话框内选择刚刚性能监视器所存储的数据,即可看到如图2-29的结果。
当然,Profiler 和性能监视器两者需要同时录制,也就是两个输出的结果其时间字段位内容需要重叠,否则就没有比较的意义了。
在图2-29中,你可以通过鼠标点选最上方窗格内的事件,在中间的窗口中便会显示你所选择录制和当时服务器性能计数器的值。据此可以判断该执行语法与服务器资源使用的因果关系。在以往,我们会需要将 Profiler 和性能计数器的结果都导入到 SQL Server 的数据表内,才容易通过 T-SQL 语法做完整的比较,现在直观且方便多了。
图2-29 导入性能数据后的结果
SQL2005 : 如何在SQL Server Profiler (事件查看器)中 跟踪查看死锁恢复的更多相关文章
- 【转】SQL Server 2008 事件探查器(SQL SERVER Profiler)
跟踪数据库sql语句的执行情况.例:一个系统,用到了sql server 数据库,这个系统共有500张表,当用户在前台页面做某一个操作时,比如插入,登录等等,我们想知道此刻是在对哪一张表操作,打开事件 ...
- SQL Server 2008 事件探查器(SQL SERVER Profiler)
要想很好地优化ERP系统,可以从客户端.服务器.网络等入手,对于我们M1系统的优化来说,SQL 语句的优化就起到很重要的作用了.为此,我们展开,学习了SQL SERVER 2008的事件探查器(SQL ...
- SQL Server扩展事件-- 使用system_health默认跟踪会话监控死锁
SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 转自:http://blog.51cto.com/ultrasql/160037 ...
- 数据库性能监测工具——SQL Server Profiler
使用SQL Server Profiler 进行sql监控需要一些设置: 其他的就是进行分析了~ 清除SQL SERVER缓存 常用的方法: DBCC DROPCLEANBUFFERS 从缓冲池中删除 ...
- 【监控笔记】【1.1】监控事件系列——SQL Server Profiler
声明:本系列是书目<sql server监控与诊断读书笔记> 联机丛书监控:https://docs.microsoft.com/en-us/sql/relational-database ...
- SQL Server 2008 R2 找不到 Install SQL Server Profiler 找不到 事件探查器 解决
摘自: http://blog.csdn.net/yuxuac/article/details/8992893 SQL Server 2008 R2 Express Edition - Install ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(3)——通过界面操作Extented Event
本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据.我们可以使用T-S ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...
- 使用SQL Server 扩展事件来创建死锁的时间跟踪
我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪. 步骤1: 通过“Object Explorer”连接 ...
随机推荐
- Linux 磁盘管理
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
- Windows Store App 插值动画
插值动画支持DoubleAnimation.ColorAnimation和PointAnimation类型的动画.其中比较常用的是DoubleAnimation动画,它可以用来控制界面元素的Doubl ...
- 弄清UTF8和Unicode
长期以来,一直对字符串编码认识比较粗略,认为支持"特殊字符"编码就是Unicode.当然,.NET平台上很少需要考虑这类问题,但搞清一些基本概念还是很有好处的. Unicode这个 ...
- 10个优秀的JavaScript Web UI库/框架推荐
在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率. 本文为你带来10款非常优秀的基于JavaScript的Web U ...
- Oracle 客户端连接服务器[转]
很多朋友在开发项目中并不是每个人用一个数据库,而是有单独的一台主机作为开发的数据库服务器,这样,就需要我们的开发人员去连接它. 首先是进入oracle的 Net Mananger:
- [转] 深入探讨C++中的引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确.灵活地使用引用,可以使程序简洁.高效.我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有 ...
- Vmware workstation 10 NAT功能总是不正常的原因
原来运行一切正常的VMWARE WORKSTATION 10,突然出现NAT功能不能正常工作的情况. 表现是:如果将虚拟机的网卡设置为NAT模式,可以PING通网关及LAN内的主机,但是PING不通外 ...
- JQuery Cross Domain
frontend: first :add $.support.cors=true; in front of the Ajax code. seconde: add the crossDomain:tr ...
- [CQOI 2014] 数三角形 & 机械排序臂
数三角形 bzoj 3505 要知道一个公式就是(a,b)和(x,y)两点所成线段上面的整点数是gcd(a-x,b-y)-1,通过枚举原点到map上任意一点所能成的三角形,再平移,得到要去掉的三点共线 ...
- having()方法设置查询条件,where()设置查询条件
having 和 where区别 ① 使用有先后顺序 ② where price>100 having price>100 ③ where 设置条件,字段必须是数据表中存在的 ...