Como encontrar las queries mas pesadas en SQL Server

sqlserver2008

 

En el momento de mejorar performance de nuestra aplicación, un aspecto muy importante (si no es el más), son las queries a la base de datos. Si conocemos, o creemos que conocemos, el funcionamiento de nuestra aplicación, podemos mejorar las queries mas pesadas. Pero, tenemos otra opción. Que SQL Server nos diga cuales son las mas costosas.

El siguiente script nos muestra, en orden (de la mas pesada a la menos), las queries ejecutadas en nuestro servidor de base de datos, que le consumieron mas tiempo/recursos ejecutar.

 

-- Find top 5 queries
SELECT TOP 5 query_stats.query_hash AS "Query Hash",
    SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",
    MIN(query_stats.statement_text) AS "Statement Text"
FROM
    (SELECT QS.*,
    SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
    ((CASE statement_end_offset
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE QS.statement_end_offset END
            - QS.statement_start_offset)/2) + 1) AS statement_text
     FROM sys.dm_exec_query_stats AS QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
GO
[Facebook] [Google] [LinkedIn] [Twitter] [Windows Live] [Email]
Posted in Base de datos, Problemas comunes Tagged with: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

ACERCA DE…

Soy desarrollador, estudiante de ingeniería en informática en UADE, trabajo como TE en el equipo de nuevas tecnologías de Microsoft Argentina, Chile y Uruguay.

Me pueden encontrar en Twitter (@AleBanzas), Facebook (/AleBanzas), o LinkedIn (/in/AleBanzas).