您的位置:首页 > 数据库

使用SQL Server Profiler捕捉高持续时间的查询

2008-12-25 17:41 274 查看
查询性能调优通常存在两个分支:主动和被动。主动的查询调优通常在开发期间发生。设计数据库,并填充数据,然后构建查询。要基于应用程序和最终用户需求构建查询。对于那些执行效果不好的查询,可以在部署存储过程完成之前或交给应用程序开发人员之前调整它们。
被动的性能调整是在已经开发完毕并部署到生产环境的代码上捕捉性能问题。随着时间的增长数据会变化,使用这些数据的索引和查询的效率也会随之变化。你可能会听到最终用户的抱怨,或是可能你自己就发现了执行效率很低的查询。


SQL Server 2005工具集中最有价值的图形化接口工具之一是SQL Server Profiler。在SQL Server Profiler中,可以监视发生在SQL Server实例中的查询活动。这个工具有很多用途。但是本技巧中,主要展示如何使用SQL Server Profiler去捕捉高持续时间的查询。
在这个技巧中,启动并配置SQL Server Profiler去捕捉高持续时间的查询。然后SQL Server Profiler会捕捉到在SQL Server Management Studio中执行的查询:
(1) 首先进入“开始”菜单,选中“程序”→“Microsoft SQL Server 2005”→“性能工具”→“SQL Server Profiler”。
(2) 打开SQL Server Profiler,进入“文件”→“新建跟踪”。这将打开“连接到服务器”对话框(请看图28-1)。在这里选择你要连接的SQL Server实例的名称以及认证方式(Windows或SQL),当指定好这些值后,点击“连接”按钮。



图28-1 “连接到服务器”对话框
(3) 打开“跟踪属性”对话框(请看图28-2)。在“跟踪名称”输入框中,输入“Duration > 5秒的查询”。SQL Server Profiler提供一组各种各样的跟踪模块。这些模板包含预定义的事件选择,它允许你开始监视SQL Server实例活动的特定类型。在这个技巧中,从“使用模板”框中选择TSQL_Duration模板:





图28-2 “跟踪属性”对话框

4) 下一步,在“跟踪属性”对话框中点击“事件选择”标签(请看图28-3)。这里载入预先存储的TSQL_DURATION模块的跟踪事件。现在将监视两个不同的事件,RPC:Completed和SQL:BatchCompleted。这个意思是SQL Server Profiler将返回在SQL Server实例中完成的远程过程调用或T-SQL语句的行。这个窗口也显示了跟踪数据要返回的列,在这个例子中包括了Duration(已完成的查询的持续时间)、TextData(捕捉实际的T-SQL)、SPID(调用者的服务器进程ID)以及BinaryData(根据事件返回不同的数据)。



图28-3 事件选择


(5) 为了查看可以添加到跟踪的其他事件和列,点击显示“所有事件”和“显示所有列”复选框(请看图28-4)。这增加了可以扩展或减少显示事件的事件种类。从而可以复选或非复选关联到独立事件的可用的列:



图28-4 扩展的事件和列




(6) 下一步,你希望去配置这个跟踪,只显示查询的持续时间超过5秒的事件。为了做到它,在事件选择窗口中点击“列筛选器”按钮。这会打开“编辑筛选器”对话框(请看图28-5)。为了筛选查询持续时间,在左边的列表框点击Duration列。在右边的列表框,扩展出“大于等于”筛选器并输入5001(它的时间单位是毫秒)。完成后,点击“确定”。
(7) 为了启动跟踪,在“跟踪属性”对话框中点击“运行”。
(8) 在SQL Server Management Studio的查询编辑器中,执行如下查询:



(9) 切换到SQL Server Profiler,可以看到查询的确被跟踪捕捉到了(请看图28-6)。为了停止跟踪,打开“文件”菜单并选择“停止跟踪”。通过高亮SQL:BatchCompleted行,可以在下面的窗格中看到完整的SELECT语句。持续时间显示了查询花了10.3秒,并且是由服务器进程ID 53发生的。
解析
在此技巧中,我展示了使用SQL Server Profiler找出执行时间很长的查询。在这个示例中我筛选了基于查询持续时间的列表,但你也可以根据需要添加额外的筛选器。例如,你可以添加只包含AdventureWorks数据库的活动的筛选器。或者,你可以添加只包含引用指定数据库对象或列名的筛选器。一旦捕捉到了你要找的活动,可以将跟踪输出结果保存到文件或表。也可以启动数据库引擎优化顾问来估计潜在提高索引性能的跟踪数据。我会在本章稍后讲到数据库引擎优化顾问。



图28-6 SQL Server Profiler结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: