SQL Server“长时间运行的事务”性能计数器:为什么没有工作者?

SQL Server“长时间运行的事务”性能计数器:为什么没有工作者?

请向我解释以下观察结果:

我有以下从 SSMS 运行的 T-SQL 代码:

BEGIN TRAN
SELECT COUNT (*)
FROM m
WHERE m.[x] = 123456
   or m.[y] IN (SELECT f.x FROM f)
SELECT COUNT (*)
FROM m
WHERE m.[x] = 123456
   or m.[y] IN (SELECT f.x FROM f)
COMMIT TRAN

查询运行大约需要 20 秒。服务器上没有运行其他用户查询。

在这种情况下,我本以为性能计数器“MSSQL$SQLInstanceName:Transactions\Longest Transaction Running Time”会不断上升到 20 的值,然后迅速下降。相反,它在两秒内上升到 12 左右,然后在查询期间在 12 和 14 之间振荡,之后再次下降。

根据 MS 文档,计数器测量“自事务开始以来活跃时间比任何其他当前事务都长的时间(以秒为单位)。”但显然,事实并非如此。这是怎么回事?

答案1

检查正在运行的 DMV,并查看查询的 CPU 时间报告。我认为这是匹配的。

相关内容