WEB开发网
开发学院数据库MSSQL Server 应用事件探查器优化SQL Server系统 阅读

应用事件探查器优化SQL Server系统

 2007-05-15 09:32:11 来源:WEB开发网   
核心提示:现在让我们看一个实例的输出:Use mydbExec usp_GetAccessPattern/*你可以输入一个执行时间作为过滤参数,毫秒为单位,应用事件探查器优化SQL Server系统(4),如usp_GetAccessPattern 1000*/输出结果如图 1所示(是部分结果,另外,倒是另外两条占用语句总数8.

现在让我们看一个实例的输出:Use mydb
Exec usp_GetAccessPattern
/*你可以输入一个执行时间作为过滤参数,毫秒为单位。如usp_GetAccessPattern 1000*/

输出结果如图 1所示(是部分结果,另外,因为原输出结果横向很长,为方便阅读,把结果从中截断为两部分):

图 1:输出结果采样一

上面的例子采样于一家大型公司的业务系统。该系统的问题是应用程序运行缓慢,SQL Server 服务器的CPU高居不下(8个CPU都在90%~100%间波动)。我使用PSSDIAG工具采样2小时左右的数据,然后运行read80trace和usp_GetAccessPattern得出上面的结果。报表一目了然。存储过程DBO.x_DEDUP_PROC在两小时内共运行75次,却占用了90.8%的CPU资源,94.6%的Reads,从访问模式的角度,该存储过程正是导致CPU高和系统性能慢的关键语句。一旦优化了该存储过程,系统的性能问题将迎刃而解。你也许有疑问,两小时内共运行75次,不是很频繁啊。其实你看看这条存储过程的平均CPU时间是681961毫秒,大概11分钟左右。也就是说一个CPU两小时内最多可以执行(60*2)/11=10条左右,该系统总共有8个CPU,即使全部CPU都用来运行该语句,那么最多也就是10*8=80条左右。上面执行总数是75,说明该存储过程一直在连续不断地运行。

那么该系统运行最频繁的语句是什么呢?我从结果中摘取另外一部分如下(图 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非常突出,甚至上面的两条语句都可以忽略了。

上一页  1 2 3 4 5 6  下一页

Tags:应用 事件 探查

编辑录入:coldstar [复制链接] [打 印]
赞助商链接