Nossa aplicação utiliza bloqueios de aplicação do SQL Server e temos casos em que precisamos ver se existe ou não um determinado bloqueio. Para fazer isso, recuperamos e filtramos informações de sys.dm_tran_locks
.
Isso funciona, mas mesmo a consulta mais simples ( SELECT * FROM sys.dm_tran_locks
) contra esse DMV em nosso sistema leva mais de 100 ms (CPU e duração de ambos) e, às vezes, pode variar acima de 500 ms. Isso ocorre ao executar como usuário superadmin ou não, do SSMS ou não.
Há aproximadamente 10.000 linhas retornadas no máximo de um full SELECT
, e estamos executando em uma VM com bastante CPU e RAM e um subsistema de disco rápido. Não parece que essa consulta deva demorar tanto.
Alguém já viu isso antes ou sabe o que pode estar acontecendo aqui? Fico feliz em fornecer mais informações se isso for útil.