SQLsys.dm_exec_query_statsLast_Elapsed_Time废话
SQL sys.dm_exec_query_stats Last_Elapsed_Time nonsense
我正在编写一个可以部署到任何 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 等行 =- 我的问题基本上是,经过的时间如何大于 'Since Creation Time'?
当然,如果它是在 1 小时前创建的,那么它怎么会像上次所用时间报告的那样花费 12 多个小时?
我知道我可能在某处遗漏了有关此专栏的基本含义,但我就是看不出在哪里。我已浏览此视图的 Microsoft 文档:
sys.dm_exec_query_stats (Transact-SQL)
其中将 last_elapsed_time 列描述为:
Elapsed time, reported in microseconds (but only accurate to
milliseconds), for the most recently completed execution of this plan
当然,如果它是在 1 小时前创建的,我不应该期待比这更好的结果吗??
有人能帮帮我吗...我开始怀疑自己的理智了!
最后经过的时间以微秒为单位。您的 since_create_time_ms
计算以毫秒为单位
DATEDIFF(ms, creation_time, getdate()) [since_creation_time_ms]
我正在编写一个可以部署到任何 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 等行 =- 我的问题基本上是,经过的时间如何大于 'Since Creation Time'?
当然,如果它是在 1 小时前创建的,那么它怎么会像上次所用时间报告的那样花费 12 多个小时?
我知道我可能在某处遗漏了有关此专栏的基本含义,但我就是看不出在哪里。我已浏览此视图的 Microsoft 文档:
sys.dm_exec_query_stats (Transact-SQL)
其中将 last_elapsed_time 列描述为:
Elapsed time, reported in microseconds (but only accurate to milliseconds), for the most recently completed execution of this plan
当然,如果它是在 1 小时前创建的,我不应该期待比这更好的结果吗??
有人能帮帮我吗...我开始怀疑自己的理智了!
最后经过的时间以微秒为单位。您的 since_create_time_ms
计算以毫秒为单位
DATEDIFF(ms, creation_time, getdate()) [since_creation_time_ms]