SQL Server - Cómo averiguar las querys más pesadas

 
Vista:

Cómo averiguar las querys más pesadas

Publicado por Jose Antonio (1 intervención) el 11/10/2010 13:21:40
Buenas....

en un cliente en el que estuve con Oracle, teníamos una query que nos informaba, basándose en las estadísticas, qué querys eran las más habituales y con mayor coste de resolución.

Con estas estadísticas, revisábamos índices, y demás caraterísticas para conseguir que se resolvieran en el menor tiempo posible y así dar un buen servicio.

Actualmente quisiera algo parecido con SQL Server 2005, pero no consigo encontrar nada de esto. Ya llevo un buen rato preguntando a San Google, pero no encuentro nada.

Quisiera saber si alguién me puede informar al respecto.

Gracias por adelantado.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Cómo averiguar las querys más pesadas

Publicado por Isaias (4558 intervenciones) el 12/10/2010 01:08:18
Pues que extraño, yo los encontre en San Google, solo hay que saber que se busca y como se busca.

Algo asi???

-- Monitorear lo 50 procesos en paralelo que han consumido más CPU.

SELECT TOP 50 qs.total_worker_time,
qs.total_elapsed_time,
SUBSTRING(qt.text,qs.statement_start_offset/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(max), qt.text)) * 2
else qs.statement_end_offset end -qs.statement_start_offset)/2)
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid,
qs.sql_handle,
qs.plan_handle
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
where qs.total_worker_time > qs.total_elapsed_time
ORDER BY
qs.total_worker_time DESC



-- Planes de ejecución más utilizados

SELECT TOP 100
qs.sql_handle
,qs.plan_handle
,cp.cacheobjtype
,cp.usecounts
,cp.size_in_bytes
,qs.statement_start_offset
,qs.statement_end_offset
,qt.dbid
,qt.objectid
,qt.text
,SUBSTRING(qt.text,qs.statement_start_offset/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(max), qt.text)) * 2
else qs.statement_end_offset end -qs.statement_start_offset)/2)
as statement
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
inner join sys.dm_exec_cached_plans as cp on qs.plan_handle=cp.plan_handle
where cp.plan_handle=qs.plan_handle
--and qt.dbid = db_id()
ORDER BY [dbid],[Usecounts] DESC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar