应用Profiler优化SQL Server数据库系统
2007-05-17 09:37:07 来源:WEB开发网核心提示: 那么该系统运行最频繁的语句是什么呢?我从结果中摘取另外一部分如下(图 2): 图 2:输出结果采样二从上表可以看出,最频繁运行的语句是USE xb SET QUOTED_IDENTIFIER,ANSI_NULL_DFLT_ON…显然这是一条执行环境配置语句,应用Profile
那么该系统运行最频繁的语句是什么呢?我从结果中摘取另外一部分如下(图 2):
图 2:输出结果采样二
从上表可以看出,最频繁运行的语句是
USE xb SET QUOTED_IDENTIFIER,ANSI_NULL_DFLT_ON…
显然这是一条执行环境配置语句,没有参考价值。倒是另外两条占用语句总数8.2%的语句值得关注:
SELECT COUNT(*) FROM x_PROCESS_STATS WHERE PROCESS……
SELECT COUNT(*) FROM x_PROCESS_STATS WHERE PROCESS……
在这个例子中,因为关键语句DBO.x_DEDUP_PROC非常突出,甚至上面的两条语句都可以忽略了。
让我们再多看一个例子(图 3):
图 3:输出结果采样三
从上面的例子中, 可以得出关键的语句是:
SELECT COUNT(*) FROM GTBL7MS
SELECT CaseNO FROM PATIENTDATA_sum WHERE MRN = @P1
后续的检查发现相关的表没有有效的索引,加上索引后性能立即整体地提高了不少.。解决了这两个语句,需要使用同样的手段继续分析和优化,直到系统的性能能够接受为止.。注意性能调优是一个长期的过程,你不太可能一两天就可以把所有的问题都解决。也许一开始可以解决80%的问题,但是后面20%的问题却需要另外80%的时间。
使用usp_GetAccessPattern的一些技巧usp_GetAccessPattern的输出报表包含了非常丰富的信息。分析报表的时候需要有大局观。你也可以有目的性地选择你需要的信息。如果是CPU性能瓶颈的系统,那么你需要关注CPU占用比例高的那类语句。如果是磁盘IO出现性能瓶颈那么你需要找到那些Reads占用比例大而且平均reads也很高的语句。需要注意的是有时候运行频繁的语句未必就是你需要关注的关键语句。一个最理想的情况是关键语句正好就是最频繁的语句。有时候即使最频繁语句占用的资源比例不高,但如果还可以优化,那么因为放大效应,微小的优化也会给系统带来可观的好处。
更多精彩
赞助商链接