澳门金沙vip 14

一款快速识别最慢语句的性能分析工具

ClearTrace 能干啥

当我们的数据库服务器在某段业务高峰年期间,周期性出现如CPU接近
100%、内存耗尽、IO量大等问题时候,作为维护人员这时候压力很大,在做一般性排除后仍然没有找到原因。当我们需要进一步深入到语句分析层面找问题根源时,ClearTrace这款工具正好可以帮上忙。 通过该工具可以识别收集性能数据的这段时间,那类语句耗费系统资源最多,帮助快速定位性能瓶颈根源,处理棘手的性能问题。

小贴士:

在使用ClearTrace工具前,需要通过SQL
Profiles或Trace脚本实时收集一段时间性能数据,内容至少包括RPC:完成SQL:BatchCompleted事件TextDataCPU、读、写持续时间列。并保存为.trc文件。

  

下面通过图文并茂的方式展示如下:

ClearTrace特点

一、SQL Profiler

标准化SQL语句

ClearTrace “标准化” SQL 语句
,消除SQL语句参数等不一致的语句,并加以合并为“同一类型”的语句。具体有以下特点:

 

  • 所有的数值、字符串和日期常数转换为一个占位符 ,“#”表示
  • 抓取的预备SQL显示为实际语句执行,不做任何更改
  • 服务器端游标与“{光标}”前缀,这样他们就可以被识别和移除
  • 抓取的sp_executesql显示实际执行的SQL语句,不做任何更改
  • 抓取的存储过程名称标注为RPC:完成事件

 举个例子:

捕获到二个语句SQL1、SQL2,注意语句的主体部分都一样,条件等号右边参数值不一样

SQL1:Select * From qryLinksByNewsletterID Where NewsletterID=19

SQL2:Select * From qryLinksByNewsletterID Where NewsletterID=10

 

SQLTrace 将SQL1和SQL2都被“标准化为”一类语句SQL(n)

SQL(n):SELECT * FROM QRYLINKSBYNEWSLETTERID WHERE NEWSLETTERID={##}

将类似的语句分组在一起,变成类似上面的标准化语句SQL(n),ClearTrace统计SQL(n)综合所有语句的性能指标的参数值,这些指标值帮助我们识别哪些”同一类型”语句占用较多资源,并可能导致性能问题。

 

 事件类 Stored Procedures\RPC:Completed TSQL\SQL:BatchCompleted

ClearTrace整合分析结果

  1. 提供较丰富的操作界面

  澳门金沙vip 1

 

  1. 分析前的查询可通过条件“应用程序”、“主机名”、“登录名”、“事件”筛选。

 澳门金沙vip 2

 备注:这里“事件”选择,当选择“Statement”是结果统计的是SQL语句,当选择“Batches”时结果统计的是存储过程。这个选项可以区分是要做语句分析,还是存储过程分析。

选择“Statement”截图

 澳门金沙vip 3

 

选择“Batches”截图

 澳门金沙vip 4

 

  1. 查询结果显示列表,

Item:“标准化”的SQL脚本、#:执行次数、CPU
执行花费时间、Read逻辑读次数、write写次数、Duration总体花费时间,另外可选的还有平均CPU、平均Read、平均write、平均Durations。

关于如何从以上几个参数纬度分析性能问题,网上已经有很多出色文章,这里就不多说了。

 澳门金沙vip 5

 

  1. 可以通过CPU、 Reads、 Writes 、
    Duration、执行次数、平均CPU、平均Reads、 平均Writes 、
    平均Duration等进行排序。这是重点,可迅速帮助我们识别哪些语句CPU使用最高、哪些IO使用最多等等,找到性能资源消费的TOP
    50还是很方便的。

 澳门金沙vip 6

 

事件关键字段
EventSequence、EventClass、SPID、DatabaseName、Error、StartTime、TextData、
HostName、ClientProcessID、ApplicationName、
CPU、Reads、Writes、Duration、RowCounts

其他特性

  • 处理多个Trace文件
  • 处理过的数据存储在数据库中,可随时查询
  • 处理完成的trace文件可归档到指定的目录

 澳门金沙vip 7

 

       1、跟踪慢SQL
澳门金沙vip 8 

ClearTrace如何操作

第一步,下载ClearTrace工具并解压,无需安装直接双击ClearTrace(不同版本解压后文件数量可能不一样)。

澳门金沙vip 9

第二步,出现提示创建数据库配置对话框(使用前确认本地要有SQLServer实例安装,并有本地Window账号可访问的权限)。

澳门金沙vip 10

 

第三步,确定后,按照提示点击菜单Tool->Options,出现配置对话框,填写可连接的SQLServer
实例名,以及创建数据库名字(建议名称:Tracereport),接着提示是否创建,点击“是”即可。

澳门金沙vip 11

 

第四步,接着选择要分析的trc文件,点击“import
Files”,显示导入进度和完成后的摘要信息。

澳门金沙vip 12

导入进度显示……..

澳门金沙vip 13

 

澳门金沙vip,第五步,导入完成后,直接显示分析查询界面,接下来开始分析语句,找到性能杀手。

 澳门金沙vip 14

 

     2、跟踪SQL执行错误
澳门金沙vip 15
澳门金沙vip 16

资源

      3、调试中找到SQL 以特殊字符作为筛选条件
澳门金沙vip 17  

ClearTrace版本下载

ClearTrace 版本Build 47:支持 SQL Server 2014, SQL Server 2012, SQL
Server 2008 R2, and SQL Server 2008。

ClearTrace 版本Build 42:支持SQL Server 2012之前版本。

下载地址:

       4、T-SQL查询trace表

论坛

.
使用中遇到任何Issue可以提交此处。

 

 

a、设置抓取的时候段

小结:

至此,
相关ClearTrace工具的介绍完毕,内容比较粗显,意义在通过此类工具能给DBA或从事数据库相关工作的朋友在性能调优时有帮助。同样,感谢无私提供这个工具并一直维护、升级新版本的贡献者们,正因有他们才让我们的工作更有效率。

 

 如要转载,请加本文链接并注明出处 ,谢谢。

b、保持成文件 然后用下面语句查询文件

复制代码 代码如下:

SELECT EventSequence,SPID,RequestID,DatabaseId,DatabaseName
,LoginName,StartTime,EndTime, TextData,Error ,Duration/1000 AS
Duration,Reads,CPU,Writes,RowCounts
,HostName,ClientProcessID,ApplicationName INTO bak.dbo.traceFROM
::fn_trace_gettable(‘C:\trace\DB50 20150623.trc’, default)

 二、表存储结构

 1、页 结构

澳门金沙vip 18

2 区结构

澳门金沙vip 19

3 文件存储

澳门金沙vip 20

4 、基表

澳门金沙vip 21