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 (事件查看器)中 跟踪查看死锁恢复的更多相关文章

  1. 【转】SQL Server 2008 事件探查器(SQL SERVER Profiler)

    跟踪数据库sql语句的执行情况.例:一个系统,用到了sql server 数据库,这个系统共有500张表,当用户在前台页面做某一个操作时,比如插入,登录等等,我们想知道此刻是在对哪一张表操作,打开事件 ...

  2. SQL Server 2008 事件探查器(SQL SERVER Profiler)

    要想很好地优化ERP系统,可以从客户端.服务器.网络等入手,对于我们M1系统的优化来说,SQL 语句的优化就起到很重要的作用了.为此,我们展开,学习了SQL SERVER 2008的事件探查器(SQL ...

  3. SQL Server扩展事件-- 使用system_health默认跟踪会话监控死锁

    SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 转自:http://blog.51cto.com/ultrasql/160037 ...

  4. 数据库性能监测工具——SQL Server Profiler

    使用SQL Server Profiler 进行sql监控需要一些设置: 其他的就是进行分析了~ 清除SQL SERVER缓存 常用的方法: DBCC DROPCLEANBUFFERS 从缓冲池中删除 ...

  5. 【监控笔记】【1.1】监控事件系列——SQL Server Profiler

    声明:本系列是书目<sql server监控与诊断读书笔记> 联机丛书监控:https://docs.microsoft.com/en-us/sql/relational-database ...

  6. SQL Server 2008 R2 找不到 Install SQL Server Profiler 找不到 事件探查器 解决

    摘自: http://blog.csdn.net/yuxuac/article/details/8992893 SQL Server 2008 R2 Express Edition - Install ...

  7. SQL Server 扩展事件(Extented Events)从入门到进阶(3)——通过界面操作Extented Event

    本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据.我们可以使用T-S ...

  8. SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...

  9. 使用SQL Server 扩展事件来创建死锁的时间跟踪

    我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪. 步骤1: 通过“Object Explorer”连接 ...

随机推荐

  1. 【bzoj1798】维护序列

    线段树维护两个标记. *0的操作在实质上没有任何影响. #include <cstdio> #include <cctype> #define rep(i,a,b) for ( ...

  2. node.js基础 1之 URL网址解析的好帮手

    URL和URI的区别: URL是统一资源定位符 URI是统一资源标识符 URL是URI的子集(URL一定是URI,但URI不一定是URL) node中的URL中的url.parse protocol: ...

  3. JavaWeb基础: 获取资源文件

    Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...

  4. MYSQL 基于GTID的复制

    1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制. 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致. 基于GTID复制: ...

  5. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  6. Citrix 虚拟化笔记

    利用win7 x64/Vmware workstation 10练习Citrix虚拟化 [安装Xenserver 6.2] 1)硬盘空间不足:要求最小8G 2)不支持硬件虚拟化:找到建立的XENSER ...

  7. (BFS)uva2554-Snakes & Ladders

    题目地址 不知道究竟是我的代码问题,还是oj出了问题(vjudge上看这道题全都是WA,没有AC的)就连直接用书上的代码都WA. 但还是先放出我这不确定正误的代码,大神路过如果有兴趣可以帮忙看一下. ...

  8. ProcExp和TaskMgr的列对比

    这两者的大部分列都是一致的,包括pid.threads.handles等,但在内存方面却有出入,对比如下: ProcExp TaskMgr Sample.exe Private Delta Bytes ...

  9. HTML5全局属性和事件

    全局属性和事件能够应用到所有标签元素上,在HTML4中有许多全局属性,比如id,class等.HTML5中又新增了一些特殊功能的全局属性和事件.   属性:   HTML5属性能够赋给标签元素含义和语 ...

  10. 实现手机扫描二维码页面登录,类似web微信-第二篇,关于二维码的自动生成

    转自:http://www.cnblogs.com/fengyun99/p/3541251.html 接上一章,我们已经基本把业务逻辑分析清楚了 下面我们第一步,实现二维码的web动态生成. 页面的二 ...