Soluzioni tecniche

T-SQL: estrarre la lista delle query più lunghe

17 Luglio 2012

Ormai quasi tutte le applicazioni si appoggiano a un database.
In caso di problemi all'applicazione stessa, quindi, il troubleshooting si complica notevolmente, in quanto viene aggiunto un livello complesso che ha il proprio linguaggio, le proprie best practice e le proprie routine di manutenzione e risoluzione dei problemi.

Query
 

Uno dei motivi più frequenti di crash o di rallentamento delle applicazioni basate su db sono le query lunghe, ossia che impiegano molto tempo a essere eseguite, occupando risorse sempre crescenti e rallentando di fatto la macchina.
Nel caso in cui poi queste query vengano eseguite ripetutamente, il rischio è che le risorse terminino rapidamente, conducendo l'applicazione, o addirittura l'intero server, a crash indesiderati.
Molte informazioni sulle operazioni eseguite sui dati vengono raccolte all'interno di strutture di sistema, o system database.
Oggi voglio condividere il codice T-SQL che una volta eseguito restituisce le N query più lunghe, con tempo massimo e medio di esecuzione.
Ecco:

SELECT TOP N
t.text NomeQuery,
s.execution_count AS NumeroEsecuzioni,
s.max_elapsed_time AS DurataMassima,
ISNULL(s.total_elapsed_time / NULLIF(s.execution_count,0), 0) AS DurataMedia
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time DESC

L'unica modifica da apportare è sostituire la N con il numero di record che vogliamo ottenere.
Quindi basta copincollare il codice nel Query Analyzer o nel Management Studio ed eseguirla.

Queste informazioni ti sono state utili?

Autore
Furio Borsi
Si appassiona al mondo digitale fin da bambino, con il glorioso Commodore 64, sul quale si diverte a scrivere semplici programmi in Basic e modificare giochi. Nel 1990 riceve in regalo il suo primo PC (i386), seguito un paio d'anni dopo da un i486dx. In questi anni affina le sue attitudini al problem solving, scassando hardware e software e divertendosi a rimetterlo a posto. ;) Diventa così "quello che se ne capisce" per i suoi familiari e amici, arrivando a collaborare con alcuni studi professionali per la gestione del parco macchine e dei server Windows. Finito il liceo, studia DAMS con indirizzo multimediale a Bologna e Imperia. Nel 2002, dopo un anno sabbatico a Londra, lavora come sviluppatore junior in un'azienda che produce software per database territoriali in ambito Pubblica Amministrazione. In questo periodo si avvicina con passione a problematiche sistemistiche e di network management su reti estese. Nel 2007 entra a far parte dello staff di Achab, per cui si occupa di formazione e supporto, in particolare riguardo a Kaseya, e gestione del parco macchine e della rete.
Commenti (0)

Lascia un commento

Il tuo indirizzo e-mail non verrà pubblicato, lo utilizzeremo solamente per inviarti la notifica della pubblicazione del tuo commento. Ti informiamo che tutti i commenti sono soggetti a moderazione da parte del nostro staff.