Monitoraggio SQL Server 2012 query / query lente / query che stanno causando il blocco
-
29-09-2020 - |
Domanda
Sto usando SQL Server 2012 e voglio prendere in attesa delle query che richiedono più tempo da eseguire insieme alle query che stanno causando il blocco sul server.Quando guardo il server per le query in esecuzione per identificare qualsiasi blocco non trovo alcuna query.
Ho configurato gli eventi estesi e ottenendo solo informazioni di alto livello da questo.Le tabelle che stanno ottenendo timeout ma ho bisogno di informazioni che raccontano di più sulle query che ha causato il timeout.
Qualche suggerimento ???
Soluzione
È possibile utilizzare il DMV sys. dm_exec_query_stats e sys.dm_exec_requests Analizzare le domande che consumano le risorse insieme alla loro durata per quanto tempo:
Utilizzare la query qui sotto per acquisire lo stesso:
-- 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;
.
Inoltre suggerirebbe se si utilizzano eventi estesi, è possibile catturare lo stesso. Per ulteriori informazioni su come configurare e utilizzare lo stesso, per favore leggi questo whitepaper da jonathan usando SQL Server 2008 Eventi estesi che dovrebbero farti andare alone con qui
Inoltre, quando le query funzionano, e ciò che tutto il processo funziona sullo sfondo e per verificare se il blocco è davvero là fuori insieme a qualsiasi attesa particolare, ti suggerirebbe di usare sp_whoisactive da Come utilizzare sp_whoisactive per trovare query slow sql server
Inoltre, se si preferisce utilizzare Profiler è possibile tracciare e risolvere i problemi come spiegato in Come identificare le query di esecuzione lente con SQL Profiler