一、概念
SQL Server Profiler (SQL Server 2000时称为“事件探查器”)是 SQL 跟踪的图形用户界面,用于监视数据库引擎或 SSAS的实例。 您可以捕获有关每个事件的数据并将其保存到文件或表中供以后分析。 例如,可以对生产环境进行监视,了解哪些存储过程由于执行速度太慢而影响了性能。
SQL Server Profiler 用于下列活动中:
• 逐步分析有问题的查询以找到问题的原因。
• 查找并诊断运行慢的查询。
• 捕获导致某个问题的一系列 Transact-SQL 语句。 然后用所保存的跟踪在某台测试服务器上复制此问题,接着在该测试服务器上诊断问题。
• 监视 SQL Server 的性能以优化工作负荷。 有关为数据库工作负荷而优化物理数据库设计的信息,请参阅数据库引擎优化顾问。
• 使性能计数器与诊断问题关联。
SQL Server Profiler 还支持对 SQL Server 实例上执行的操作进行审核。 审核将记录与安全相关的操作,供安全管理员以后复查。
二、基本操作
SQL Server Profiler 是一个功能丰富的界面,用于创建和管理跟踪并分析和重播跟踪结果。 事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播特定的一系列步骤。
创建跟踪的过程如下:
1. 新建跟踪
在“文件”菜单上,单击“新建跟踪”,并连接到 SQL Server 实例。此时,将显示“跟踪属性”对话框。
注意:如果选中“建立连接后立即开始跟踪”,就不会显示“跟踪属性”对话框,而是直接开始跟踪。 若要关闭此设置,请在“工具”菜单上,单击“选项”,再清除“建立连接后立即开始跟踪”复选框。
2. 输入跟踪的名称
在“跟踪名称”框中,键入跟踪的名称。
3. 使用模板
在“使用模板”列表中,为此跟踪选择一个跟踪模板;如果不想使用模板,请选择“空白”。
常用的模板有以下:
(1)Blank(空白)。空白跟踪,方便从头创建整个跟踪。
(2)SP_Counts。捕捉执行的每个存储过程,以便判断每个过程执行了多少次。
(3)Standard(默认)。供定制的最常用的模板。捕捉执行的存储过程和即席(Ad Hoc)查询,捕捉每个过程和批处理的性能统计数据,还捕捉每个登录(login)和注销(logout)。
(4)TSQL。捕捉执行的所有存储过程和即席查询批处理的一个列表,但不包括任何性能统计数据。
(5)TSQL_Duration。捕捉执行的每个存储过程和即席查询批处理的持续时间。
(6)TSQL_Grouped。捕捉每个登录和注销,以及执行的每个存储过程和即席查询批处理。包括以标识“执行请求的应用程序和用户”的信息,但不包括任何性能数据。
(7)TSQL_Locks。捕捉阻塞和死锁信息,比如阻塞的进程、死锁链、死锁图、锁升级(lock escalation)和锁超时。还捕捉每个存储过程、存储过程中的每个命令以及每个即席查询请求。
(8)TSQL_Replay。捕捉针对实例执行的存储过程和即席查询批处理,它采用的格式允许在测试系统上重播跟踪。该模板常用于执行负载和回放测试。
(9)TSQL_SPs。捕捉所有即席查询批处理、存储过程以及存储过程中的每个语句的性能数据。还会捕捉每个登录和注销。
(10)Tuning。捕捉即席查询批处理、存储过程以及存储过程中的每个语句的基本性能数据。
4. 保存跟踪结果
若要保存跟踪结果,请执行下列操作之一
(1)保存到文件
单击“保存到文件”将跟踪捕获到文件中。
指定“设置最大文件大小”的值。 默认值为 5 MB。 防止文件增长时失控。
或者,选择“启用文件滚动更新”,以便当文件大小达到最大值时自动创建新文件。如果未“启用文件滚动更新”但又“设置最大文件大小”,当文件达到上限时Profiler会停止捕捉事件。
也可以选择“服务器处理跟踪数据”,由正在运行跟踪的服务而不是客户端应用程序来处理跟踪数据。在服务器处理跟踪数据时,即使是在压力较大的情况下也不会跳过事件,但是服务器性能可能会受到影响。
(2)保存到表
单击“保存到表”将跟踪捕获到数据库表中。
根据需要,可以单击“设置最大行数”,并指定值。
注意:如果不将跟踪结果保存到文件或表中,则当 SQL Server Profiler打开时可以查看跟踪。 但是,在停止跟踪并关闭 SQL Server Profiler之后会丢失跟踪结果。 为了避免这种丢失跟踪结果的情况,可以在关闭 SQL Server Profiler之前单击“文件”菜单上的“保存”来保存结果。
在服务器上以网格方式显示跟踪结果时,需要大量的内存,可能会加载服务器的负担。遇到这种情况,建议在服务器上以文本格式查看跟踪结果。
5. 跟踪停止时间
根据需要,可以选中“启用跟踪停止时间”复选框,再指定停止日期和时间。
6. 事件选择
若要添加或删除事件、数据列或筛选器,请单击“事件选择”选项卡。
7. 启动跟踪
单击“运行”启动跟踪功能。
三、重播跟踪
创建跟踪的目的之一,是在以后重播它们。在重播时,SQL Server Profiler可以模拟用户连接和验证,利用它可以复原在跟踪中记录的操作。可以使用不同的方式重播跟踪,以帮助发现并解决各种不同的问题。
(1)逐步执行跟踪以监视跟踪中的每一个步骤。
(2)使用初始的时间基线执行跟踪,以模拟用户负载。
(3)以高重播率执行跟踪,来对服务器进行压力测试。
重播跟踪的操作方法如下:http://technet.microsoft.com/zh-cn/library/ms187857(v=sql.105).aspx
1. 加载跟踪文件或跟踪表
在“文件”菜单中选择“打开”,然后选择“跟踪文件”或“跟踪表”,也可以选择脚本文件。可以将另一台服务器上捕捉到的跟踪文件在本机上重播。
之后,跟踪被载入SQL Server Profiler窗口,记录在跟踪中的事件和命令在窗口中显示出来。
2. 启动重播
在“重播”菜单中选择相应的按钮进行操作。
注意:SQL Server 2012有专门的重播工具,在此之前,Profiler的重播功能基本上被RML、ReadTrace、OStress、ORCA等实用工具所取代。
四、性能影响
SQL Server Profiler的跟踪启动之后, SQL Server引擎在处理正常事务的同时,还要向Profiler传送跟踪信息。因此,Profiler会加重SQL Server的负担,特别是在数据库引擎处理大量数据时,对性能的影响尤其明显。
本文结语:
通过SQL Server Profiler 跟踪实例上执行的操作,然后根据捕获的结果分析T-SQL执行的效率及性能问题。
本文出自 “我们一起追过的MSSQL” 博客,转载请与作者联系!