Monitorando consultas/consultas lentas do SQL Server 2012 que estão causando bloqueio
-
29-09-2020 - |
Pergunta
Estou usando o SQL Server 2012 e quero obter as consultas que estão demorando mais para serem executadas junto com as consultas que estão causando bloqueio no servidor.Quando olho para o servidor em busca de consultas em execução para identificar qualquer bloqueio, não encontro nenhuma consulta.
Eu configurei eventos estendidos e obtive apenas informações de alto nível.As tabelas que estão atingindo o tempo limite, mas preciso de informações que contem mais sobre as consultas que causaram os tempos limite.
Alguma sugestão???
Solução
Você pode fazer uso do DMV sys.dm_exec_query_stats e sys.dm_exec_requests para analisar as consultas que consomem recursos junto com sua duração:
Use a consulta abaixo para capturar o mesmo:
-- Execute the query inside target database
SELECT TOP 10
qs.total_elapsed_time / qs.execution_count / 1000000.0 AS average_seconds,
qs.total_elapsed_time / 1000000.0 AS total_seconds,
qs.execution_count,
SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS individual_query,
o.name AS object_name,
DB_NAME(qt.dbid) AS database_name
FROM
sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
WHERE
qt.dbid = DB_ID()
ORDER BY
average_seconds DESC;
Além disso, sugiro que se você estiver usando eventos estendidos, poderá capturá-los.Para obter mais informações sobre como configurar e usar o mesmo, leia este whitepaper de Jonathan Usando eventos estendidos do SQL Server 2008 o que deve fazer você seguir em frente aqui
Além disso, quando as consultas são executadas e todos os processos são executados em segundo plano e para verificar se o bloqueio está realmente disponível junto com alguma espera específica, sugiro que você use SP_WHOISACTIVE de Como usar sp_WhoIsActive para encontrar consultas lentas do SQL Server
Além disso, se preferir usar o Profiler, você pode rastrear e solucionar o mesmo, conforme explicado em Como identificar consultas de execução lenta com SQL Profiler