SQL sys.dm_exec_query_stats Last_Elapsed_Time 废话

Posted

技术标签:

【中文标题】SQL sys.dm_exec_query_stats Last_Elapsed_Time 废话【英文标题】:SQL sys.dm_exec_query_stats Last_Elapsed_Time nonsense 【发布时间】:2016-12-15 16:52:57 【问题描述】:

我正在编写一个可以部署到任何 SQL 服务器的脚本,该脚本将提供有关服务器使用情况的一些有意义的统计信息。我很快意识到,我从 sys.dm_exec_query_stats 的 last_elapsed_time 列中得到了一些相当可疑的结果。以如下脚本为例:

select
    creation_time,
    last_elapsed_time                                       [last_elapsed_time_ms],
    last_worker_time                                        [last_worker_time_ms],
    DATEDIFF(MILLISECOND, creation_time, getdate())         [since_creation_time_ms],


    convert(varchar(20), DATEDIFF(DAY, 0, CONVERT(VARCHAR,DATEADD(ms,last_elapsed_time,0),113))) + ' days ' +
    CONVERT(VARCHAR,DATEADD(ms,last_elapsed_time,0),114)    [last_elapsed_time_format],

    convert(varchar(20), DATEDIFF(DAY, 0, CONVERT(VARCHAR,DATEADD(ms,last_worker_time,0),113))) + ' days ' +
    CONVERT(VARCHAR,DATEADD(ms,last_worker_time,0),114)     [last_worker_time_format],

    convert(varchar(20), DATEDIFF(DAY, creation_time, getdate())) + ' days ' +
    CONVERT(VARCHAR,DATEADD(ms,DATEDIFF(MILLISECOND, creation_time, getdate()),0),114)  [since_creation_time]

from sys.dm_exec_query_stats
order by last_elapsed_time desc

我运行它,这是我得到的结果示例:

具体查看我的结果中的第 2 行、第 3 行、第 4 行等 =- 我的问题基本上是,经过的时间怎么会大于“自创建时间”??

当然,如果它是在 1 小时前创建的,那么根据上次经过的时间报告,它到底怎么可能花费了 12 小时以上?

我知道我可能在某个地方错过了有关此专栏的基本含义,但我就是看不到在哪里。对于这个视图,我已经浏览了 Microsoft 文档:

sys.dm_exec_query_stats (Transact-SQL)

其中将 last_elapsed_time 列描述为:

经过的时间,以微秒为单位报告(但仅精确到 毫秒),用于该计划的最近完成的执行

当然,如果它是在 1 小时前创建的,我不应该期望得到比这更大的结果吗??

请有人能帮帮我...我开始怀疑自己的理智了!

【问题讨论】:

【参考方案1】:

最后经过的时间以微秒为单位。您的since_create_time_ms 计算以毫秒为单位

DATEDIFF(ms, creation_time, getdate())         [since_creation_time_ms]

【讨论】:

啊,现在可以了!非常感谢 SQLChao 的快速响应!我会整理并更新答案!

以上是关于SQL sys.dm_exec_query_stats Last_Elapsed_Time 废话的主要内容,如果未能解决你的问题,请参考以下文章

sql [sql技巧]一些sql技巧#sql

sql 2008 r2 在sql 2008上兼容么

SQL基础

有大神知道,sql server 中如何批量执行sql语句吗?

pl sql developer怎么执行sql

pl sql developer怎么执行sql