SQL Server报告性能 - 按CPU总时间排序的最高查询 - 包含的内容

时间:2017-11-28 14:12:29

标签: sql-server performance

我正在尝试通过插入查询来评估sql server 2008/2016上的负载级别。

我发现有些文章讨论过这些问题,例如: http://use-the-index-luke.com/sql/dml/insert 谈论执行时间。

我对sql server不太熟练,例如不知道如何评估执行计划。

我知道这些是方便的性能报告,例如“性能 - 按CPU总时间排序的最佳查询”。

我搜索过但未找到这些报告的定义。

所以问题是 - 这个报告在查询的CPU时间计算中包含哪些服务器任务,即

  1. 索引重新计算?
  2. 甚至可能执行触发器?
  3. 别的什么?
  4. 谢谢!

2 个答案:

答案 0 :(得分:0)

索引重新计算和触发器执行不会作为查询的一部分执行。索引更新是维护活动的一部分,触发器执行是插入/更新/删除活动的一部分。

一般来说,Top Queries报告的计算中不包含“服务器任务”。查询执行计划基于该查询以及查询编译开始时可用的数据统计信息。生成的计划与服务器上发生的维护或IUD活动无关。

其他活动可能导致实际持续时间增加,但该额外时间不能直接归因于查询。该查询只是在其他活动完成时被迫等待。

这有帮助吗?

答案 1 :(得分:0)

这些是MDW或管理数据仓库报告,特别是SQL Server 2008中引入的查询统计历史记录。如果您有兴趣收集此数据,请启用Configure the Management Data Warehouse

What are these reports anyway

默认情况下,只有前10个查询将被CPU包含在前10个查询中,但是,您可以模拟报告后面的查询并使用类似于查询的查询调整所需的结果如下article中讨论的那样。

SELECT TOP X
    qs.total_worker_time/(qs.execution_count*60000000) as [Minutes Avg CPU Time],    
    qs.execution_count as [Times Run],
    qs.min_worker_time/60000000 as [CPU Time in Mins],
    SUBSTRING(qt.text,qs.statement_start_offset/2,
    (case when qs.statement_end_offset = -1 then len(convert(nvarchar(max), qt.text)) * 2
     else qs.statement_end_offset end -qs.statement_start_offset)/2) as [Query Text],
    db_name(qt.dbid) as [Database],
    object_name(qt.objectid) as [Object Name]
FROM sys.dm_exec_query_stats qs cross apply
     sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Minutes Avg CPU Time] DESC