Muchos desarrollos de programas tienen llamadas a otros servidores para obtener información. La mayoría tiene…
Evaluar rendimiento con Wait Stats en SQL Server
Durante mucho tiempo en la evaluación de servidores se ha priorizado el verificar el uso de recursos como Memoria, CPU, Red y otros. Sin embargo, cada sistema o servicio siempre tiene sus propios parámetros que puedes ser evaluados para cualquier análisis de eficiencia. Ahora quiero mostrarte cómo evaluar rendimiento con Wait Stats en SQL Server.
¿Crees que tu SQL Server está actuando lento?
Primero debes conocer qué es lo que está haciendo tu servidor.
Cada acción tiene una reacción, y eso también lo puedes ver en las operaciones que tiene SQL Server.
De acuerdo con la acción que se esté realizando, tu motor puede esperar algún tiempo a liberar algún recurso antes de terminar una ejecución. Este tiempo se conoce como Resource Wait.
Vamos dándo forma a esta idea. Si una acción (digamos una consulta) está esperando a que se libere un recurso (Resource Wait), aquí tenemos ya identificado un cuello de botella.
¿Qué es lo que SQL Server está esperando?
Puede esperar por la liberación de diferentes recursos, por eso es que es importante que conozcas cuáles son.
En la documentación oficial sobre Wait Stats encontrarás toda la información con todos sus detalles. Podríamos hablar de muchos de ellos pero voy a mostrarte los más comúnes.
BACKUP
No necesita mucha explicación respecto a cuándo se tienen este tipo de espera, ¿verdad? Pero puedes ver más detalles sobre Cómo afecta el wait BACKUP* en SQL Server.
CXPACKET
Con una relación directa a los procesadores de tu servidor. Aquí sí podemos hablar directamente del CPU pero entendiendo qué es lo que involucra el uso de este recurso. Aspectos claves en este punto: Comprender el paralelismo en SQL Server, y claro, después podrás ver Cómo afecta CXPACKET en SQL Server.
LCK
Referencia a los llamados locks. No estoy diciendo «bloqueos» porque quiero manejar los conceptos como son. Para este propósito puedes ver Qué son los Bloqueos en SQL Server y así tener más claras las ideas. Luego de haber conocido más profundamente estos conceptos podrás ver que existen varios Tipos de Bloqueos en SQL Server, entonces podrás identificar mejor este tipo de espera y plantear alternativas más eficientes para reducir los tiempos de ejecución.
PAGEIOLATCH
Como lo dice el nombre, esperas relacionadas con I/O. Aquí puedes revisar todo aquello que tenga que ver con la lectura y escritura en disco.
Puedes evaluar muchas cosas acá. Desde la cantidad de memoria RAM que tienes (es posible que llevando los datos a memoria no tengas que esperar al uso de disco, por ende podrías aumentar la cantidad de RAM que tienes) hasta incluso podrías evaluar las capacidades del storage que está actuando.
Este tipo de espera está relacionado usualmente también con CXPACKET, así que vale la pena ver los niveles de paralelismo que pueden causar las lecturas grandes de páginas de datos. Así verás Cómo afecta PAGEIOLATCH en SQL Server donde también te muestro cómo identificar a los principales causantes de esta espera.
OLEDB
Seguramente lo has visto cuando trabajas con externos, otros servidores, o simplemente cuando necesitas utilizar este proveedor para conectarte a una fuente de datos. Puedes ver Cómo afecta OLEDB en SQL Server.
¿Se puede medir el rendimiento con Wait Stats?
Algunos autores lo consideran como el punto de partida para el Performance Tuning.
Es importante que conozcas estos tipos de espera. Y seguro que puedes ver muchos más. Aquí te muestro los más comúnes.
Un punto vital es que conozcas tu servidor, tengas líneas bases en tu monitoreo y puedas saber cuándo y cómo medir el rendimiento con Wait stats. Seguro que ellos hablan y es necesario que aprendas a escucharlos.