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
Leave a Reply