WEB开发网
开发学院数据库MSSQL Server 应用Profiler优化SQL Server数据库系统 阅读

应用Profiler优化SQL Server数据库系统

 2007-05-17 09:37:07 来源:WEB开发网   
核心提示: 存储过程并不复杂,很容易理解,应用Profiler优化SQL Server数据库系统(5),可以看到统计的结果放在queries_staticstics表中,然后按照不同的条件排序后输出,那么最多也就是10*8=80条左右,上面执行总数是75,举例说:select top 10 *from

存储过程并不复杂,很容易理解。可以看到统计的结果放在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,说明该存储过程一直在连续不断地运行。

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

Tags:应用 Profiler 优化

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