Pregunta

Estamos teniendo tiempos de espera de consultas aleatorios y esporádicos en nuestro clúster de SQL Server 2005.Tengo algunas aplicaciones que lo usan, así que estoy ayudando en la investigación.Al observar el % de tiempo de CPU en el antiguo Perfmon normal, ciertamente puedes verlo vinculado.Sin embargo, el monitor de actividad de SQL solo proporciona el tiempo acumulado de CPU e IO utilizado por un proceso, no lo que está usando en ese momento o durante un período de tiempo específico.Quizás podría usar el generador de perfiles y realizar un seguimiento, pero este grupo se usa mucho y me temo que estaría buscando una aguja en un pajar.¿Estoy ladrando al árbol equivocado?

¿Alguien tiene algunos buenos métodos para rastrear consultas/procesos costosos en este entorno?

¿Fue útil?

Solución

Esto le dará las 50 declaraciones principales por tiempo promedio de CPU; consulte aquí para ver otros scripts: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50
        qs.total_worker_time/qs.execution_count as [Avg CPU 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 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY 
        [Avg CPU Time] DESC

Otros consejos

he encontrado el Informes del panel de rendimiento ser de mucha ayuda.Son un conjunto de informes RS personalizados proporcionados por Microsoft.Sólo tiene que ejecutar el instalador en su PC cliente y luego ejecutar setup.sql en la instancia de SQL Server.

Después de eso, haga clic derecho en una base de datos (no importa cuál) en SSMS y vaya a Informes -> Informes personalizados.Navegue y seleccione performance_dashboard_main.rdl que se encuentra en la carpeta \Program Files\Microsoft SQL Server\90 ools\PerformanceDashboard de forma predeterminada.Sólo necesitas hacer esto una vez.Después de la primera vez, aparecerá en la lista de informes.

La vista del panel principal mostrará la utilización de la CPU a lo largo del tiempo, entre otras cosas.Puedes actualizarlo ocasionalmente.Cuando vea un pico, simplemente haga clic en la barra del gráfico para obtener los datos detallados detrás de él.

Usamos Quest Destacar producto.Obviamente es una inversión de tiempo y dinero, por lo que puede que no le ayude a corto plazo, pero si tiene un entorno SQL grande, es bastante útil.

Como dice Yaakov, ejecute el generador de perfiles durante unos minutos con una carga típica y guarde los resultados en una tabla que le permitirá ejecutar consultas sobre los resultados, lo que hará que sea mucho más fácil detectar cualquier consulta que acapare los recursos.

Profiler puede parecer un enfoque de "aguja en un pajar", pero puede resultar útil.Intente ejecutarlo durante un par de minutos mientras las bases de datos están bajo la carga típica y vea si alguna consulta destaca por tomar demasiado tiempo o acaparar recursos de alguna manera.Si bien una situación como esta podría indicar algún problema general, también podría estar relacionada con algún problema específico con uno o dos sitios, lo que arruina las cosas lo suficiente en ciertas circunstancias como para causar un rendimiento muy pobre en todos los ámbitos.

Ejecute Profiler y filtre las consultas que requieran más de un determinado número de lecturas.Para la aplicación en la que trabajé, cualquier consulta que no fuera de informes y que requiriera más de 5000 lecturas merecía una segunda mirada.Es posible que su aplicación tenga un umbral diferente, pero la idea es la misma.

Esta utilidad de Erland Sommarskog es increíblemente útil.

Es un procedimiento almacenado que agrega a su base de datos.Ejecútalo cuando quieras para ver qué consultas están activas y obtener una buena imagen de bloqueos, bloqueos, etc.Lo uso regularmente cuando las cosas parecen pegadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top