请向我解释以下观察结果:
我有以下从 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 时间报告。我认为这是匹配的。