解。可以看到统计的结果放在queries_staticstics表中,然后按照不同的条件排序后输出。举例说:
select top 10 * from #queries_staticstics order by cp desc
上面的语句将把queries_staticstics表中的记录按照某类语句占用总CPU量的比例cp(即sum(cpu)/@sum_cpu)进行排序输出。这让你在分析服务器CPU性能问题的时候快速定位哪一类语句最耗CPU资源,从而对症下药。
现在让我们看一个实例的输出:
/********************/
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%的语句值得关注:
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页
![]() | 图解MySQL数据库的安装和操作 | 53859 |
![]() | Mysql数据库操作新手入门,手把手的教会你 | 36468 |
![]() | MySQL入门学习(二)入门篇 | 33092 |
![]() | MySQL入门学习(一)安装篇 | 28496 |
![]() | MY SQL常用命令 | 25517 |
![]() | MySQL入门学习(三)学习篇 | 20929 |
![]() | MySQL入门学习(四)学习篇(2) | 12353 |
![]() | MySQL入门学习(六)修改和备份、批处理 | 8935 |