在收集好数据之后,需要做的就是对数据进行分析。如果不知道哪里出了问题,可能需要分析的数据会很多,新版的SQL Server和Windows都提供了很多工具来优化这些过程,比如第11章中介绍的PAL工具,可以把从性能监视器得到的数据通过一些表格展示,而不需要用户额外再手动去转换、制图。当然,工具不是万能的。
大部分的性能问题集中在低效的编码、不合理的设计及配置上面,当你面对庞大的性能数据时,如果一时间不知道从何处开始,可以尝试先把精力集中在这些地方。比如可以使用如下语句先查找逻辑读取最高的查询。
SELECT TOP (25)
P.name AS [SP Name],
Deps.total_logical_reads AS [TotalLogicalReads],
deps.total_logical_reads / deps.execution_count AS [AvgLogicalReads],
deps.execution_count,
ISNULL (deps.execution_count / DATEDIFF (Second, deps.cached_time, GETDATE ()), 0) AS [Calls/Second],
deps.total_elapsed_time,
deps.total_elapsed_time / deps.execution_count AS [avg_elapsed_time],
deps.cached_time
FROM sys.procedures AS p
INNER JOIN sys.dm_exec_procedure_stats AS deps ON p. [Object_id] = deps. [Object_id]
WHERE deps. Database_id = DB_ID ()
ORDER BY deps.total_logical_reads DESC;
然后找出这些查询的执行计划,再进行分析优化,这部分在第8章详细介绍。