SQL Server WAIT STATISCTICS ()

Los contadores de SQL Server asociados o agrupados como WAIT STATS son muy útiles a la hora de diagnosticar problemas de desempeño. De su nombre en Ingles podemos sacar que esta es información de procesos que tienen que esperar por alguna razón.

Cuando alguna operación o proceso en SQL Server tiene que esperar su turno para ser ejecutado el SQLOS guarda la información referente como estas estadísticas. Las vistas que mas consultan para indagar en nuestros tiempos de espera son sys.dm_os_wait_stats y sys.dm_os_waiting_tasks. En la vista sys.dm_os_wait_stats encontramos un resumen de todas la espera que se dio durante la ejecución de cualquier tarea. En la vista sys.dm_os_waiting_tasks encontramos información de los procesos que estan esperando por un recurso en este momento. La información que esta detallada puede ser muy útil si sabemos que nos esta diciendo realmente.

waitStats

Es importante saber cual son los tipos de espera (wait_type) y que nos estan diciendo, a continuación una breve explicación de los tipos mas importantes, profundizar en ellos llevaría muchísimo tiempo

  1. CXPACKET: habitualmente indica que se esta dando paralelismo en la ejecución de alguna de nuestras consultas
  2. LATCH_* y PAGELATCH_*: no estan relacionados con lectura/escritura en disco duro. Se pueden asociar a problemas de contención con recursos internos al SQLOS como TEMPDB especialmente cuando se usan tipos de datos tipo texto. Habitualmente cuando se trabaja y se mejora los escenarios con los otros tipos de espera se mejora la situacion los *LATCH*
  3. PAGEIOLATCH_*,IO_COMPLETION, WRITELOG: estos tipos se asocian a cuellos de botella en el sistema de almacenamiento, un numero alto me indicaria que estamos ante un problema de contencion de lectura/escritura. El PAGEIOLATCH se asocia a problemas de lectura/escritura en los archivos de datos(data files) y el WRITELOG a problemas de escritura en el LOG de la base de datos.
  4. LCK_*: este tipo de esperas indican que se esta dando bloqueos en el sistema, y que los procesos estan esperando para poder obtener uso exclusivo de un recurso.
  5. THREADPOOL: Este es un tipo especial de tiempo de espera, se da a lo interno del SQLOS; indica que el proceso ha tenido que esperar para obtener un hilo para entrar en la cola de procesamiento. Puede darse en casos de muchos bloqueos en los cuales se da mucho paralelismo en las tareas que se estan ejecutando y el SQLOS se queda sin hilos (worker threads) o bien indica la necesidad de adicionar procesadores a nuestro sistema.
  6. SOS_SCHEDULER_YIELD:  indica que la consulta cumplió su tiempo de ejecución en el procesador y cedio el espacio al siguiente proceso en cola. Valores altos habitualmente indican problemas de CPU
  7. ASYNC_NETWORK_IO: habitualmente se define como un cuello de botella en la red; pero esto no es realmente valido. Muchas veces se puede ver cuando un cliente esta procesando una llamada registro a registro; cambiar este comportamiento involucra cambiar el código de la aplicación.

Para tener mas informacion se puede acceder a la pagina de Microsoft o bien me pueden escribir y con gusto tratare de ayudarles

TECHNET WAIT STATISTICS

Avatar de Desconocido

Autor: Luis Carlos Diaz

DBA for more than 20 years, the DBA manager of a team of 7.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.