Amigos,
Hay tres análisis básicos que pueden ayudarnos a la hora de estudiar un degradamiento general de nuestra Base de Datos.
A) Estudiar Posibles Bloqueos
B) Analizar Valores Altos de I/O y CPU
C) Relevar Múltiples Procesos con un mismo SPID, (el spid es el nº que el sql server le da a cada proceso corriendo en el servidor)
Para estudiar estos tres puntos vitales de nuestro sistema mi arma favorita es el sp_who2
Este sp muestra todas las sesiones que están actualmente establecidas en el servidor.
La sentencia es sumamente sencilla:
EXEC sp_who2
El resultado ha obtener será el siguiente:
Los primeros 50 SPID están reservados para procesos del sistema que generalmente no merecen nuestra atención, ya que no suelen ser el origen de la degrdación de la performance del server.
Ahora los puntos que SI debemos tener en cuenta
1) Bloqueos
Existe una columna llamada BlkBy la cual nos informa el SPID que está bloqueando al proceso de la fila que estemos observando.
Antes de "matar al proceso" con el comando KILL + SPID, podemos saber en que consiste el proceso que está bloqueado. Cómo? Pues simplemente utilizando la sentencia DBCC Inputbuffer (SPID).
Puede ocurrir que varios procesos estén bloqueados por el mismo SPID, en ese caso conviene estudiar en profundidad el proceso bloqueante
2) Altos Valores de INPUT/OUPUT y/o CPU
Para esto disponemos de dos columnas "CPUTime" y "DiskIO". Los procesos que demanden mucha lectura/escritura en disco y/ o CPU merecen ser analizados en detalle. Pueden hacerse mejoras de distinto tipo para evitar esta utilización excesiva de los recursos del sistema. (Recomiendo puntualmente analizar en detalle los planes de ejecución para determinar los pasos a seguir)
3) Procesos Paralelos
Cuando observamos varias filas destinadas a un mismo SPID tenemos que saber que es una acción que toma el SQL SERVER al estimar que le llevará un largo tiempo resolver el proceso. Cuando esto ocurre el sql server "tira" multiples hilos para el mismo proceso pudiendo tener esto consecuencias muy malas en términos de performance del server.
Una vez más, estudiemos el proceso "responsable" y tratemos de mejorarlo. De ser imposible podemos disminuir el máximo número de procesadores que el paralelismo puede usar. Esto se hace a nivel de servidor (MAXDOP).
Amigos, eso es todo, espero que el artículo sea de utilidad.
Saludos.
Otro Post Recomendado por el Autor
"Mantenimiento de Estadísticas Para una Performance Optima de nuestra BD"
https://www.blogger.com/blogger.g?blogID=4841087034568585749#editor/target=post;postID=5281491474180357583;onPublishedMenu=allposts;onClosedMenu=allposts;postNum=0;src=postname
Mi nombre es Gustavo Herrera. Me desempeño profesionalmente como DBA especializado en Microsoft Sql Server, formo parte activamente de la Comunidad Sql Server de Argentina (comunidad oficial de Microsoft). La idea de este blog es generar un vínculo más de intercambio con uds., mis queridos colegas. Espero que se sientan a gusto, pasen, vean, opinen, comenten, critiquen, aporten.. este blog lo hacemos entre todos.