Cómo identificar consultas más pesadas en SQL Server
Muchas veces nos encontramos en situaciones en las cuales tenemos un servidor SQL Server, y los usuarios reportan que el sistema está lento, por lo tanto, es crucial que podamos identificar cuál es la causa.
El primer paso puede ser identificar cuáles son las consultas TSQL que están consumiendo más recursos en el servidor, para poder identificarlas podemos recurir al siguiente script, el cual nos devuelve las consultas ordenadas por tiempo de ejecución, a partir de esta consulta podemos identicar el TSQL que consume más recursos e iniciar nuestras tareas de mejoras de desempeño.
-- Consultas que afectan el desempeño 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 consulta_TSQL ,db.name AS [nombre_base_datos] ,qs.total_elapsed_time / 1000 AS tipo_total_ms ,qs.total_elapsed_time / qs.execution_count / 1000 AS tiempo_promedio_ms ,qs.last_elapsed_time / 1000 AS ultimo_tiempo_total_ms ,qs.execution_count AS total_ejecuciones ,qs.total_worker_time / 1000 AS total_worker_time_ms ,qs.total_worker_time / qs.execution_count / 1000 AS promedio_worker_time_ms ,qs.last_worker_time / 1000 AS ultimo_worker_time_ms ,qs.last_execution_time AS ultima_ejecucion ,qs.total_logical_reads AS total_lecturas ,qs.last_logical_reads AS ultimas_lecturas ,qs.total_logical_writes AS total_escrituras ,qs.last_logical_writes AS ultimas_escrituras 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 LEFT JOIN sys.databases db ON (qt.dbid = db.database_id) ORDER BY qs.total_elapsed_time DESC
Comments