sql server:如何检查精确到微秒的查询执行时间

ipakzgxi  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(404)

我在SQLServer2019中有一个查询,它对表的主键字段进行选择。这个表中有大约600万行数据。我想知道我的查询精确到微秒(或者至少100微秒)的速度。我的查询速度比毫秒还快,但在SQLServer中只能找到精确到毫秒的查询度量。
到目前为止我试过的:
设置统计时间
这只显示毫秒
像这样 Package 我的查询:

SELECT @Start=SYSDATETIME() 
SELECT TOP 1 b.COL_NAME FROM BLAH b WHERE b.key = 0x1234 
SELECT @End=SYSDATETIME(); 
SELECT DATEDIFF(MICROSECOND,@Start,@End)

这表明根本没有时间过去。但这并不准确因为如果我加上 WAITFOR DELAY '00:00:00.001' ,这将增加一个可测量的毫秒延迟,它仍然为datediff显示0。只有等待2毫秒,我才能看到它出现在datediff中
查找执行计划并获取 total_worker_timesys.dm_exec_query_stats table。
在这里我看到600微秒,但是微软文档似乎表明这个数字不可信:
总工时。。。cpu时间总量,以微秒为单位(但仅精确到毫秒)
我已经没有主意了,需要一些帮助。有人知道我如何在微秒内准确地测量我的查询吗?扩展事件在这里有用吗?有没有其他性能监视工具可以使用?谢谢您。

vshtjzan

vshtjzan1#

这太长了,不能发表评论。
一般来说,您不会寻找以微秒为单位的性能度量。基于数据库、服务器和网络中发生的其他事情,变化太大了。
相反,您可以设置一个循环,运行查询数千次,甚至数百万次,然后平均执行次数。还有更多的细微差别,例如,如果要确保查询使用的是冷缓存,则需要清除缓存。

相关问题