Назад | Перейти на главную страницу

Счетчик производительности SQL Server «Длительная транзакция»: почему нет работника?

Пожалуйста, объясните мне следующее наблюдение:

У меня есть следующий фрагмент кода T-SQL, который я запускаю из SSMS:

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

Запрос занимает около двадцати секунд. У меня нет других запросов пользователей на сервере.

В этих обстоятельствах я ожидал бы, что счетчик производительности «MSSQL $ SQLInstanceName: Transactions \ Longest Transaction Running Time» будет постоянно расти до значения 20, а затем быстро падать. Вместо этого он увеличивается примерно до 12 в течение двух секунд, а затем колеблется между 12 и 14 в течение всего запроса, после чего снова падает.

Согласно документации MS, счетчик измеряет «отрезок времени (в секундах) с момента начала транзакции, который был активен дольше, чем любая другая текущая транзакция». Но, видимо, это не так. Что дает?

Проверьте DMV, в которых это работает, и посмотрите, что сообщает время ЦП для запроса. Я предполагаю, что это соответствует.