Cómo monitorear sus instancias y bases de datos SQL Server

Monitorear instancias y bases de datos SQL Server provee información necesaria para diagnosticar y resolver problemas de desempeño de SQL Server, al igual que optimizar SQL Server. Un rendimiento óptimo no es fácil de definir y configurar, dado que usualmente existe un intercambio entre múltiples factores de software y hardware, También depende de su ambiente, requerimientos de negocios y políticas de la compañía.

Mientras que reportes lentos pueden ser aceptables en una pequeña fábrica, no es en grandes empresas donde ralentizaciones, intermitencias y cuellos de botella afectan a una gran cantidad de usuarios y pueden afectar significativamente al negocio. Los problemas listados son usualmente inaceptables y deben ser resueltos tan pronto como sea posible.

Una vez que el rendimiento de SQL server está optimizado, tiene que ser monitoreado constantemente, dado que cada cambio en datos, esquemas y configuración usualmente llevan a una situación donde una optimización manual adicional es necesaria. EL ejemplo más común es las estadísticas obsoletas – una consulta que funciona bien y entonces, sin ninguna razón obvia, se vuelve muy lento.

Para tener una instancia SQL Server optimizada y con buen desempeño, un Administrador de Base de Datos (Database Administrator, DBA) debe ser proactivo y monitorear el desempeño del sistema constantemente, definir tendencias normales y definir líneas base para métricas de desempeño específicas para SQL Server, ser notificado acerca de métricas que están fuera del rango de valores normal, y tomar acciones adecuadas.

¿Qué métricas SQL Server monitorear?

Las métricas que deberían ser monitoreadas dependen en sus objetivos de desempeño. De todas maneras, hay un rango de métricas comúnmente monitoreadas que proveen información suficiente para una resolución básica de problemas. Basados en sus valores, métricas adicionales más específicas pueden ser monitoreadas para encontrar la causa raíz del problema.

Estas métricas de desempeño de SQL Server comúnmente monitoreadas son uso de memoria y procesador, tráfico de red y actividad de disco.

Aparte de monitorear parámetros de SQL Server, es recomendado monitorear parámetros para la base de datos específica, al igual que parámetros de sistema de Windows.

Las métricas monitoreadas comúnmente son: tiempo de procesador, longitud de la cola del procesador, incidentes de página por segundo, tiempo de vida de página, memoria de servidor objetivo y total, requerimientos batch, utilización de procesador, uso de red, paginación, conexiones de usuarios, etc.

SQL Server provee dos características integradas de monitoreo: Activity Monitor y Data Collector.

Activity Monitor

Activity Monitor rastrea solo las métricas de SQL Server más importantes. Para obtenerlas, ejecuta consultas contra su instancia SQL Server anfitrión cada 10 segundos. EL desempeño es monitoreado sólo mientras Activity Monitor está abierto, lo que lo hace una solución ligera con casi ningún costo extra.

Las métricas son mostradas en 5 paneles colapsables: Overview, Processes, Resource Waits, Data File I/O, y Recent Expensive Queries.

El panel Overview muestra el porcentaje de tiempo del procesador, número de tareas en espera, operaciones I/O en la base de datos en MB/seg, y el número de requerimientos batch.

El panel Processes muestra procesos de SQL Server actualmente funcionando en la instancia. La información mostrada es: Login, aplicación y anfitrión usados, estado de tarea y comando, tiempo de espera, etc. La información en la tabla puede ser filtrada por el valor de la columna específico.

El menú contextual del panel Process provee una característica útil para un análisis más profundo y resolución de problemas. Es el rastreo de procesos seleccionado en SQL Server Profiler.

EL panel Resource Waits muestra esperas para diferentes recursos: memoria, compilación, red, etc.

Muestra el tiempo de espera (el tiempo que las tareas de SQL Server están esperando en recursos del sistema), el tiempo de espera reciente, el tiempo acumulativo de espera y el contador de espera promedio.

El panel Data File I/O muestra una lista de todos los archivos de base de datos: MDF, NDF y LDF, sus nombres y rutas, actividad reciente de lectura y escritura y tiempo de respuesta.

EL panel Recent Expensive Queries muestra las consultas en los últimos 30 segundos que usaron más recursos: procesador, memoria, disco y red. El menú contextual permite abrir la consulta en una pestaña de consultas de SQL Server Management Studio y abrir su plan de ejecución.

Cómo usar el Activity Monitor

EL Activity Monitor puede ser abierto vía el ícono de Activity Monitor en la barra de herramientas de SQL Server Management Studio, el atajo de teclado Ctrl+Alt+A, o el menú contextual Object Explorer de la instancia de SQL Server..

Como se muestra, Activity Monitor rastrea sólo un conjunto predefinido de las métricas más importantes de SQL Server. Métricas adicionales no pueden ser monitoreadas; las métricas monitoreadas no pueden ser removidas. Sólo monitoreo en tiempo real es posible. No hay una opción integrada para guardar el historial de métricas para un uso posterior. Por lo tanto, Activity Monitor es útil para un monitoreo actual y una resolución de problemas básica; para cualquier análisis más profundo y optimización de desempeño, es necesaria una herramienta de monitoreo donde las métricas monitoreadas pueden ser seleccionadas, los umbrales definidos y los datos históricos almacenados si es necesario.

Data Collector

Data Collector es otra característica de monitoreo y optimización integrada en SQL Server Management Studio. Colecta métricas de desempeño de instancias SQL Server, lasguarda en un repositorio local de tal manera que puedan ser usadas para un análisis posterior. Usa Data Warehousing, SQL Server Agent e Integration Services.

A diferencia de Activity Monitor, Data Collector le permite especificar las métricas que monitoreará. Ofrece tres conjuntos integrados de métricas (colectores de datos) con las métricas de monitoreo de desempeño más importantes y comunes. Para monitorear métricas de desempeño adicionales, colectores de datos personalizados pueden ser creados vía código T-SQL o API.

Cómo usar Data Collector

Asegúrese de que SQL Server Integration Services están instalados y que SQL Server Agent, Management Data Warehouse y Data Collection están activados.

  1. Expanda Management en Object Explorer de SQL Server Management Studio
  2. En el menú contextual Data Collection seleccione Configure Management Data Warehouse
  3. Seleccione Set up data collection

  4. Haga clic en Next

  5. Seleccione el nombre de la instancia SQL Server y la base de datos que hospedará la administración de data warehouse, y la carpeta local donde los datos serán capturados.

  6. Haga clic en Next, revise las configuraciones y haga clic en Finish

Data Collection provee tres conjuntos predefinidos, disponibles en la carpeta System Data Collection Sets en el nodo de Object Explorer Management | Data Collection: Disk Usage, Query Statistics y Server Activity. Cada uno tiene su reporte integrado.

El conjunto de recolección de datos Disk Usage recolecta datos para los archivos de datos de la base de datos (MDF y NDF), el archivo de registro de transacciones (LDF) y estadísticas de I/O.

El reporte integrado Disk Usage está disponible en el menú contextual Data Collection. Muestra el espacio usado por los archivos de la base de datos, las tendencias de crecimiento y el crecimiento promedio diario.

El conjunto de recolectores de datos Query Statistics recolecta código de consultas, estadísticas, actividad y planes de ejecución de consultas para las 10 consultas más costosas.

EL conjunto de recolectores de datos Server Activity recolecta datos acerca del procesador, la memoria, el disco I/O y el uso de red. El reporte muestra la CPU, la memoria, el disco I/O y el uso de la red, las esperas de SQL Server, la instancia de SQL Server y la actividad del sistema operativo.

Como se muestra anteriormente, Data Collection tiene que estar configurado e iniciado para capturar datos. Provee tres conjuntos integrados de recolección y reportes adecuados. No hay una guía para adicionar más métricas; eso tiene que ser hecho a través de código.

Una de las ventajas del Data Collector es que no tiene que recolectar datos todo el tiempo, sino solamente en horarios predefinidos, y por tanto añade menos costo adicional. Una desventaja de esta característica es que no hay una opción para seleccionar las bases de datos en la instancia de SQL Server que serán monitoreadas, todas las bases de datos serán monitoreadas, lo que añade costo adicional, ruido en los datos recolectados y requiere más espacio de disco.

La característica no está disponible en versiones de SQL Server anteriores a 2008 y en ediciones diferentes de Enterprise, Standard, Business Intelligence y Web.

A diferencia de Activity Monitor, no hay una opción para ver gráficos en tiempo real, sino que los datos capturados pueden ser grabados para un número específico de días. La característica provee métricas de desempeño básicas, pero conocimiento acerca de código es requerido para monitorear cualquier métrica adicional.

ApexSQL Monitor

ApexSQL Monitor es un software de monitoreo de SQL Server que monitorea el desempeño del sistema, SQL Server y la base de datos en tiempo real a través de 30 contadores. Permite a los usuarios seleccionar las instancias SQL Server y bases de datos que serán monitoreadas, para seleccionar las métricas para cada base de datos, instancia SQL Server y máquina, y para especificar las métricas y valores de umbral que, si se produce una salida, las alertas serán activadas. ApexSQL Monitor muestra las métricas de desempeño en gráficos en tiempo real y almacena los datos de las métricas correspondientes en una base de datos que es un repositorio central para usos posteriores.

Los datos de las métricas de desempeño capturados son mostrados como gráficos en cinco pestañas por defecto, pero también en pestañas creadas por el usuario.

La pestaña Overview muestra la información y configuraciones más importantes de SQL Server y métricas de desempeño de SQL Server (radio de hits de buffer cache, escaneos completos por segundo, escrituras lentas por segundo y requerimientos de bloqueo por segundo).

La pestaña System performance muestra las métricas de desempeño del sistema operativo: Tiempo de procesador/longitud de cola del procesador, utilización de red, uso del archivo de paginación, introducción de páginas por segundo, páginas por segundo, promedio de escritura/lectura de bytes en el disco en bytes, longitud promedio y actual de la cola del disco, promedio de segundos de disco por lectura/escritura, bytes de escritura/lectura de disco en MB, espacio libre en el disco y memoria disponible en MB.

La pestaña SQL Server performance muestra métricas relacionadas al desempeño de la instancia SQL Server: el número de requerimientos batch, la transacción de más largo funcionamiento, puestos libres de listas, escaneos completos, escritura lenta, requerimientos de bloqueo y puntos muertos por segundo, conexiones de usuario, memoria total del servidor en MB, concesiones de memoria pendientes, radio de hits de buffer cache, expectativa de vida de página, escritura/lectura de página, y divisiones de página por segundo.

La pestaña Database performance muestra detalles acerca de los datos de la base de datos y el tamaño del archivo del registro de transacciones.

La pestaña Query performance muestra las consultas más importantes que usaron la mayor cantidad de recursos durante el periodo seleccionado, incluyendo la presentación gráfica de las consultas más lentas por tiempo de CPU promedio, tiempo de ejecución promedio e I/o por segundo. El número de consultas puede ser seleccionado por el usuario.

Las Custom tabs pueden ser moldeadas para la necesidad de usuarios individuales. Los usuarios pueden crear y configurar sus propias pestañas para ser mostradas para conocer las métricas críticas rápidamente y de manera fácil después de iniciar ApexSQL Monitor. Las pestañas personalizadas pueden ser creadas para proveer una vista general a primera vista de las métricas más importantes del sistema, la instancia SQL Server y la base de datos ordenadas de una manera que puedan dar una percepción fácil del problema potencial.

Cómo usar ApexSQL Monitor

  1. Inicie ApexSQL Monitor
  2. Haga clic en Add server en el menú para añadir la instancia SQL Server que desea monitorear. Todas las instancias SQL Server monitoreadas serán mostradas en Servers list a la izquierda.
  3. Para configurar las métricas de desempeño, haga clic en Configure metrics en el menú. Las métricas monitoreadas pueden ser configuradas en la base de datos, la instancia SQL Server y a nivel de máquina.

  4. En el mismo formulario usted puede configurar las alertas. Para habilitar una alarma seleccione la casilla de verificación Alerting e ingrese los valores umbral.

  5. Después de que haya configurado las alertas y métricas, haga clic en Apply en la parte superior del formulario.

SI hay una alerta, esta será indicada por un ícono cerca de la instancia SQL Server en la lista Servers. Para ver la lista y detalles para las alertas activas, haga clic en Alertas en el menú. La lista muestra la métrica de desempeño, tiempo de inicio y final y el número de ocurrencias para cada nivel de seguridad.

ApexSQL Monitor es una solución de monitoreo fácil para iniciar y configurar, y no es necesario ningún conocimiento de código. Provee un monitoreo granular, y a diferencia de las soluciones de monitoreo nativas de SQL Server, permite seleccionar las métricas, así como las bases de datos que serán monitoreadas. Diferentes métricas pueden ser monitoreadas para cada base de datos, instancia de SQL Server y sistema operativo. Esto reduce el costo adicional añadido por el proceso de monitoreo.

A diferencia de Activity Monitor y Data Collector, ApexSQL Monitor muestras las métricas en gráficos de tiempo real, almacena los datos históricos en un repositorio central y muestra los datos históricos en gráfico. Las alertas pueden ser configuradas en poco clics, con un valor umbral específico ingresado para alertas de severidad baja, media y alta.

Fuentes útiles:
Activity Monitor
Data Collection
Monitoring SQL Server Performance

Traductor: Daniel Calbimonte

Junio 4, 2015