【问题标题】:How to find slowest queries如何找到最慢的查询
【发布时间】:2010-10-23 15:25:25
【问题描述】:

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

慢 = 大于 N 秒,10 用于争论。

【问题讨论】:

  • 定义“慢”。虽然查询可能很慢,但这仅与调用次数以及这些调用是否重要有关。

标签: sql-server sql-server-2005 profiling


【解决方案1】:

在 SQL 2005 中,您可以使用管理视图来查找运行缓慢的查询。我不久前在SQL server performance 上找到的一个好脚本将帮助您入门;它首先列出性能最慢的数据。

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;

【讨论】:

  • 您知道时间的计量单位:total_worker_time、total_elapsed_time 和 avg_elapsed_time?
  • 时间以微秒为单位; MSDN对管理视图有很好的细分msdn.microsoft.com/en-us/library/ms189741.aspx
  • 是的,这些 DMV 很棒 - 但它们也是动态的 - 正如它们的名字所暗示的那样,例如每次服务器启动时它们都会被刷新。如果您的服务器每晚都重新启动,那么这些可能在任何一天都不能代表非常可靠的样本。因此,请谨慎对待这些测量 - 它们是动态的,并且可能基于相当小的样本......
  • 如何在该查询中添加一列以提供存储过程名称?
  • @Hades 对于你最好从 sys.dm_exec_procedure_stats 开始的程序
【解决方案2】:

在使用分析器之前,我会检查内置的使用报告。右键单击数据库、报告、标准报告,然后单击对象执行统计信息。

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

【讨论】:

  • @Andomar,可以在生产服务器上运行该报告吗?我尝试在我的一台生产服务器上运行该报告,一分钟后它仍然显示“正在检索数据”。为了安全起见,我停止了它。
  • @Bill Paetzke:即使运行时间很长,该报告也应该可以安全用于生产。如果你不信任它,你可以查看进程列表中的阻塞问题!
【解决方案3】:

duration 列为我做了这件事,但有时我也会查看 reads 和 writes 列。

我使用 TSQL:StmtCompleted 过滤器来获取原始查询。您可能想向其中添加其他存储过程,但 tsql 是您需要查看的“基础”。正如MSDN article 所说

"存储过程的执行 可以通过 SP 监控:启动, SP:StmtStarting、SP:StmtCompleted 和 SP:完成的事件类和所有的 TSQL 事件类。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2012-07-11
    • 2019-01-15
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多