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.

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

Traductor: Daniel Calbimonte

junio 4, 2015