如何找到最慢的查询如何找到最慢的查询(How to find slowest queries)

2019-05-13 09:46发布

使用SQL Server 2005探查,你跟踪哪些事件,列和筛选找到你最慢的查询和存储过程?

慢=大于N秒,10为自变量的缘故。

Answer 1:

在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;


Answer 2:

以前我用的探查,我检查了内置使用情况报告。 右击数据库,报告,标准报告,那么目标执行统计。

它列出了当前缓存的执行计划,与资源的数量和他们已经运行的次数一起。 这通常提供了有关什么是保持服务器繁忙的一个非常好的主意。



Answer 3:

持续时间列会为我,但有时我看的读取和写入过列。

我用的是TSQL:StmtCompleted事件过滤器,以获得原始查询。 您可能要添加其他像存储过程是,但TSQL是“基地”您需要查看。 正如MSDN文章说:

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



文章来源: How to find slowest queries