使用Sql Server 2005 Profiler,您可以跟踪哪些事件,列和过滤器以查找最慢的查询和存储过程?

慢=大于N秒,为了争论10。

有帮助吗?

解决方案

在SQL 2005中,您可以使用管理视图查找运行缓慢的查询。我前几天在 SQL服务器性能上发现的一个好脚本将会帮助你开始;它列出了首先执行速度最慢的数据。

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;

其他提示

在使用Profiler之前,我会检查内置使用情况报告。右键单击数据库,“报告”,“标准报告”,然后单击“对象执行统计”。

它列出了当前缓存的执行计划,以及资源量和运行次数。这通常可以很好地了解保持服务器忙碌的原因。

持续时间列为我做了,但有时我也会查看读写列。

我使用TSQL:StmtCompleted过滤器来获取原始查询。您可能希望将其他类似存储过程添加到其中,但tsql是您需要查看的“基础”。正如 MSDN文章所述

  

"存储过程的执行   可由SP监控:开始,   SP:StmtStarting,SP:StmtCompleted,和   SP:完成的事件类和所有   TSQL事件类。“

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top