跟踪清理工具

2008-04-02 10:38:47来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

SQL Server 事件探查器对于协助 DBA 优化他们的 T-SQL 代码而言是真正的不可多得的财富。但是,过度的富有(这让我想起了《一千零一夜》中的阿拉丁)可能会令人不知所措。最近,在我首次尝试弄懂客户端服务器上按跟踪收集的大量数据时,感到了一种“孤立无助”的感觉。在该特定客户端上,联机事务处理系统每小时执行的数据库事务超过四百万个。这意味着,实际上捕获“SQL Batch Completed”事件的 30 分钟跟踪将生成长达两百万行的表格。当然,不利用一些自动化操作来处理这么多的记录是不可行的,即使选择耗时最长或成本最高的事务也未必会有助于标识瓶颈。毕竟,每分钟执行数千次耗时短的事务,可能会导致性能有所下降。[订阅者可能希望重新阅读 Linchi Shea 于 2002 年 06 月为其 Perl 代码撰写的文章“Distill SQL Server Log Files”。Linchi 的 PDF 和 Perl代码均包含在本文的下载中 — 编者注。]www.c hinaitpower.comlfrcxzbU

跟踪清理规则www.c hinaitpower.comlfrcxzbU

我的直觉告诉我使用聚合。但是,由于执行查询中的轻微变化,不用多长时间我就发现按事务类型分组和聚合跟踪文档并不凑效。每个存储过程调用都具备不同的参数,并且查询都是通过不同的搜索参数和稍许不同的 WHERE 子句条件来执行。某些事务包含注释或在其他相同的代码中具备不同数量的空格、制表符或换行符。某些查询使用关键字的同义词。www.c hinaitpower.comlfrcxzbU

为了解决大型跟踪分析的问题,我研发了一个跟踪清理进程,以除去任何跟踪记录的不太重要的细节,并允许按事务类型进行分组。例如,假如我的跟踪文档包含 50,000 条有关相同存储过程执行的记录(每条都带有不同的参数),那么,我的进程会按持续时间、CPU、读取和写入(任何的总计和平均数)对他们进行排列。这使我能够快速标识负责大部分整体系统利用的事务类型。www.c hinaitpower.comlfrcxzbU

跟踪清理的实现需要 1) 分析任何按跟踪记录的 T-SQL 语句,连同 2) 消除变量参数,如以下示例所示。假设此处所列的三个事务均是按跟踪捕获的。 www.c hinaitpower.comlfrcxzbU

1. Proc_A



123,



'alpha',



0x0a9fff8b



2. EXECUTE [Proc_A] -345, 'beta', null /*comment*/



3. EXEC    dbo.Proc_A  9876543, default    -- test



虽然任何三个事务都执行存储过程 Proc_A,但是执行、参数、换行符、制表符、空格连同注释中的变化使他们看起来很不同。我的清理算法会将他们聚合至一个事务类型存储为“Proc_A%”的报告中。www.c hinaitpower.comlfrcxzbU

例如,为了识别这数个事务是否执行同样的存储过程,或将 INSERT 插入带有不同值的相同表格,该清理算法将执行以下操作:www.c hinaitpower.comlfrcxzbU

消除 EXEC 和 EXECUTE 关键字。 www.c hinaitpower.comlfrcxzbU

将任何的换行符和制表符替换为空格。 www.c hinaitpower.comlfrcxzbU

将多个空格视为一个整体。 www.c hinaitpower.comlfrcxzbU

消除任何数字常量、十六进制的值、文字字符串连同 NULL 关键字。 www.c hinaitpower.comlfrcxzbU

移除两种类型(“double-dash”和 /*...*/)的注释。 www.c hinaitpower.comlfrcxzbU

移除已消除的参数间的逗号。 www.c hinaitpower.comlfrcxzbU

删除“dbo”任何者名称,该名称也许会用于许多对象名称之前,并在多数情况中为默认值。 www.c hinaitpower.comlfrcxzbU

将每个分析事务的代码减少至前 800 个字符。这允许我在多个长批处理的第一部分相同时,将他们视为同一事务类型(在按所述其他规则减少不太重要的元素之后)。 www.c hinaitpower.comlfrcxzbU

实现涉及到系统过程(例如 sp_cursoropen)的特别事务清理,这会将实际的执行查询作为文字参数传递至 SQL Server。对于这些情况,我从参数中提取了实际的查询,并丢弃 sp_cursoropen“包装”。 www.c hinaitpower.comlfrcxzbU

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: SQL Server 6.5 配置使用要点

下一篇: 如何查出前台正在发出的sql语句?