ReadTrace
在sql server中有一个profiler的工具用于追踪sql server的执行过程,可以监控sql server的的所有过程。假如我们使用SSMS来操作sql server,那么在profiler中反映的就是ssms这个图形界面所对应的命令。我们在troubleshooting的时候一般都要求客户抓取这个profiler最终的trace文件,该文件名后缀是.trc。但是我们得到的这个trace文件可能很大,往往有几万甚至几十万条记录,那么我们如何来分析这个trace呢?这个时候我们就需要引入一些工具,在这里我们用到的是ReadTrace工具,他的下载地址是:RML Utilities for SQL Server。
安装完毕后,在\Program Files\Microsoft Corporation\RMLUtils\目录下,会有两个小工具叫ReadTrace.exe跟Reporter.exe。假如要分析在'D:\sqltrace\input\sp_trace.trc'里的Trace文件,输出也产生在'D:\sqltrace\output'下,命令可以是:
D:\Program Files\Microsoft Corporation\RMLUtils>ReadTrace -I"D:\sqltrace\input\sp_trace.trc" -o"D:\sqltrace\output" -f
注意,这里的参数是区分大小写的。还有一个需要注意到就是输出文件的目录不能跟输入文件是在同一个目录下面,不然会报错,所以我这里用input和output区分开来。在执行完上面的操作以后,会自动在sql server中创建一个叫做PerfAnalysis的数据库。然后我们点击前面提到的Reporter.exe,就可以查看报告了。
常用的统计有以下三项:
- 报表工具会根据trace记录里的开始时间、结束时间、CPU、Reads、Writes、Duration等,按时间段做统计,画出一张图来。能帮助管理员了解在不同时间段SQL Server的繁忙程度。
- 按程序(Application Name)、数据库(Database Id)、用户名(Login Name)排序,找出造成最大SQL工作量的程序/数据库/用户。
- 按照同一类型的语句,统计最昂贵的语句。在unique batch和unique statement中