Buscar este blog

jueves, 14 de noviembre de 2013

Listar Las Queries Mas "Pesadas" de Nuestro Servidor - (las queries "que mas tardan" en devolver resultados)

Estimados amigos, una vez más con ustedes.

Cuántas veces se han preguntado cuáles son las queries que se presentan como "las más complicadas de resolver" para nuestro motor de base de datos?

 Pues aquí les dejo un script que hará este trabajo para uds...

 Es muy útil  cuando notan problemas de performance y deciden comenzar a "atacarlos".

 Es una muy buena práctica dedicarle un tiempo a estudiar y tratar de mejorar al menos las queries más costosas (añadiendo índices, mejorando las estadísticas, cambiando lo lógica de las queries etc)

 Este script les devuelve las 10 queries más costosas con datos tomados desde la última modificación del plan de ejecución.

 Desde ya, incluye todas las queries que atacan por consola o por medio de un store procedure.

 La última columna les da un link que les permite ver el plan de ejecución gráfico.

 Cualquier duda estoy a su disposición.

 Saludos desde Argentina queridos colegas.

 IMPORTANTE --> El nivel de compatibilidad de la BD debe ser 90 o superior.   

Detalle: Lista las 10 queries más costosas de nuestra base de datos 
Autor  : Gustavo Herrera para Sql Server Para Todos                             


SELECT
TOP 10
SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.TEXT)ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) as query,
qs.execution_count as 'cantidad de ejecuciones',
qs.total_logical_reads as 'total_lecturas_lógicas',
qs.total_logical_writes as 'total_escrituras_lógicas',
qs.total_worker_time 'total_CPU_consumida_ms',
qs.total_elapsed_time/1000000/60 'total_mts_consumidos_x_la_ejecución',
qs.max_elapsed_time/1000000/60 'máxima_tardanza_en_la_ejecución_mts',
qp.query_plan 'link_plan_ejecucion'
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp

ORDER BY qs.last_elapsed_time DESC