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. [kylin] 部署kylin服务

    一.工具准备 zookeeper3.4.6 (hadoop.hbase 管理工具) Hadoop. Hbase1.1.4 Kylin1.5.0-HBase1.1.3 Jdk1.7.80 Hive 二. ...

  2. WampServer Version 2.5 bug修改

    做PHP开发都需要安装PHP的运行环境,为了方便,网上可以下载到好多的集成环境,最近使用WampServer Version 2.5发现有一些bug,分享一下修改的方法.高手请路过. 1.echo d ...

  3. [转]CSS网页布局:div水平居中的各种方法

    http://jingyan.baidu.com/article/fa4125ac90a2a328ac70929e.html 在Web标准中的页面布局是使用Div配合CSS来实现的.这其中最常用到的就 ...

  4. log4net.NoSql +ElasticSearch 实现日志记录

    前言: 前两天在查找如何扩展log4net的日志格式时找到一个开源项目Log4net.NoSql,它通过扩展Appender实现了把日志输出到ElasticSearch里面.顺藤摸瓜,发现涉及的项目还 ...

  5. Appium移动自动化测试(一)--安装Appium

    Appium 自动化测试是很早之前就想学习和研究的技术了,可是一直抽不出一块完整的时间来做这件事儿.现在终于有了. 反观各种互联网的招聘移动测试成了主流,如果再不去学习移动自动化测试技术将会被淘汰. ...

  6. kernel source reading notepad

    __init ,标记内核启动时所用的初始化代码,内核启动完成后就不再使用.其所修饰的内容被放到.init.text section中 __exit,标记模块退出代码,对非模块无效 to be cont ...

  7. Get IP Address in Android 4.0+

    在android2.3以下的系统中,可以使用如下的代码来获取Android系统的本地IP地址: [java]  private String getLocalIPAddress() throws So ...

  8. NSDate 时间比较...等

    http://blog.csdn.net/reylen/article/details/8560128 创建当前时间 NSDate *date = [NSDate date]; 从现在开始的24小时 ...

  9. Android Performance Optimization

    1.zipalign 2.ui优化 3.package size 4.RenderScript 5.Resource Shrinking & Code Shrinking 6.java cod ...

  10. IIS 7.5 高并发参数配置

    IIS 7.5 高并发参数配置 由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,对于高并发请求,参照文档设置10万并发 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为 ...