Milena Petrovic

Monitor de Actividad de SQL Server

December 18, 2015 by
El monitoreo del sistema y de las bases de datos SQL Server muestra las métricas que indican el desempeño del servidor. Un monitoreo eficiente provee suficiente información para diagnosticar problemas, bloqueos, cuellos de botella y para solucionarlos.

¿Qué es el Monitor de Actividad de SQL Server?

El Monitor de Actividad de SQL Server es una característica en SQL Server Management Studio que muestra información acerca los procesos de SQL Server y su efecto en el desempeño de SQL Server.

Paneles del Monitor de Actividad

El Monitor de Actividad consiste en muchos paneles – Overview, Processses, Resource Waits, Data File I/O y Recent Expensive Queries. Los paneles pueden ser expandidos y colapsados. Las actividades son consultadas sólo cuando el panel específico es expandido.

“El Monitor de Actividad corre consultas en la instancia monitoreada para obtener información para los paneles del Monitor de Actividad. Cuando el intervalo de recarga es establecido a menos de 10 segundos, el tiempo que es usado para correr estas consultas puede afectar el desempeño del servidor” [1]

El panel Overview

El panel Overview contiene los gráficos para la información más importante de la instancia de SQL Server. El menú contextual contiene la opción Refresh interval que puede ser establecida a un valor predeterminado desde 1 segundo a 1 hora.

SQL Server Activity Monitor - Overview pane

% Processor Time – es el porcentaje del tiempo que el procesador gasta para ejecutar hilos que no están inactivos.

Waiting Tasks – es el número de tareas que están esperando por el procesador, I/O o memoria a ser liberada para que las tareas puedan ser procesadas.

Database I/O – es el ratio de transferencia de datos en MB/s desde la memoria al disco, del disco a la memoria o del disco al disco.

Batch Requests/sec – es el número de lotes de SQL Server recibidos por la instancia en un segundo.

El panel Processes

El panel Processes muestra la información acerca de los procesos que actualmente están corriendo en las bases de datos SQL, quién los corre y desde qué aplicación.

Una sugerencia por cada cabecera de tabla muestra una corta descripción de los datos de la columna y las vistas del sistema usadas para obtenerlos. Cada columna puede ser filtrada usando los filtros en la cabecera de la columna.

EL menú contextual para los procesos específicos provee opciones para ver el último lote de comandos T-SQL para el proceso, mátelo o rastréelo en SQL Server Profiler.

The Processes pane in Activity Monitor

Session ID – Es un valor único asignado por el Motor de la Base de Datos a cada conexión de usuario. Este es el valor spid retornado por el procedimiento sp_who.

User Process – 1 para procesos de usuarios, 0 para procesos de sistema. El filtro por defecto está establecido a 1, así que sólo procesos de usuario son mostrados.

Login – El inicio de sesión SQL Server que corre la sesión.

Database – El nombre de la base de datos en la que el proceso está corriendo.

El estado de la tarea, vacío para tareas el estado ejecutable y suspendido. El valor puede ser también obtenido usando la vista sys.dm_os_tasks, como la columna task_state. Los estados retornados pueden ser:
“PENDIENTE: Esperando por un hilo trabajador.
EJECUTABLE: Ejecutable, pero esperando a recibir un quantom.
EJECUTÁNDOSE: Actualmente ejecutándose dentro del programa.
SUSPENDIDO: Tiene un trabajador, pero está esperando por un evento.
COMPLETO: Completo.
SPINLOOP: Atascado en un spinlock.”
[2]

Command – El tipo de comando actual. El valor también puede ser obtenido usando la vista sys.dm_exec_requests, como la columna command.

Application – El nombre de la aplicación que creó la conexión.

Wait Time (ms) – Por cuánto tiempo en milisegundos la tarea está esperando por un recurso. El valor puede ser también obtenido usando la vista sys.dm_os_waiting_tasks, como la columna wait_duration_ms.

Wait Type – El último/actual tipo de espera. EL valor también puede ser obtenido usando la vista sys.dm_os_waiting_tasks, como la columna wait_type. Las esperas pueden ser esperas de recurso, de cola y externas.

Wait Resource – Es el recurso por el que está esperando la conexión. EL valor puede ser también obtenido usando la vista sys.dm_os_waiting_tasks, como la columna resource_description.

Blocked By – El ID de la sesión que está bloqueando la tarea. El valor puede ser también obtenido usando la vista sys.dm_os_waiting_tasks, como la columna blocking_sessions_id.

Head Blocker – La sesión que causa la primera condición de bloqueo es una cadena de bloqueo.

Memory Use (KB) – la memoria usada por la tarea. El valor puede ser también obtenido usando la vista sys.dm_exec_sessions, como la columna memory_usage.

Host Name – El nombre de la computadora donde la conexión actual es hecha. El valor puede ser también obtenido usando la vista sys.dm_exec_sessions, como la columna host_name.

Workload Group – el nombre del grupo de carga de trabajo Resource Governor[3]. EL valor puede ser también obtenido usando la vista sys.dm_resource_goernor_workload_groups, como a columna name.

El panel Resource Waits

Muestra información acerca de esperas por recursos.

SQL Server Activity Monitor - Resource Waits pane

Wait Category – Las categorías son creadas combinando tipos de esperas estrechamente relacionadas. Los tipos de esperas son mostrados en la columna Wait Type en el panel Processes.

Wait Time (ms/sec) – El tiempo que todas las tareas en espera están esperando por uno o más recursos.

Recent Wait Time (ms/sec) – El tiempo promedio que todas las tareas en espera están esperando por uno o más recursos.

Average Waiter Count – es calculado para un típico punto en el tiempo en el último intervalo de muestra y representa el número de tareas esperando por uno o más recursos.

Cumulative Wait Time (sec) – El tiempo total que las tareas en espera han esperado por uno o más recursos desde el último reinicio de SQL Server, o la última ejecución DBCC SQLPERF.

El panel Data File I/O

Muestra información acerca de los archivos de base de datos en la instancia SQL Server. Por cada base de datos, todos los archivos de base de datos son listados – MDF, LDF y NDF, sus rutas y nombres.

Data File I/O pane in Activity Monitor

MB/sec Read – Muestra la actividad de lectura reciente para el archivo de la base de datos.

MB/sec Written – Muestra la actividad de escritura reciente para el archivo de la base de datos.

Response Time (ms) – El tiempo promedio de respuesta para la actividad de lectura y escritura reciente.

El panel Recent Expensive Queries

Las consultas costosas son las consultas que usan muchos recursos – memoria, disco, red. El panel muestra las consultas costosas ejecutadas en los últimos 30 segundos. La información es obtenida desde las vistas sys.dm_exect_requests y sys.dm_exec_query_stats. Un doble clic en la consulta abre la sentencia monitoreada.

The context menu for the specific query provides options to open the query in Query Editor, and show the execution plan

Recent Expensive Queries pane in SQL Server Activity Monitor

Query – La sentencia de consulta SQL monitoreada.

Executions/min – El número de ejecuciones por minuto, desde la última recompilación. El valor puede ser también obtenido usando la vista sys.dm_query_stats, com la columna execution_count.

CPU (ms/sec) – El ratio de CPU usado, desde la última recompiación. El valor puede ser también obtenido usando la vista sys.dm_exec_query_stats, como la columna total_worker_time.

Physical Reads/sec, Logical Writes/sec, and Logical Reads/sec – El ratio de lecturas físicas/escrituras lógicas/lecturas lógicas por segundo. El valor puede ser también obtenido usando la vista sys.dm_exec_query_stats, como las columnas total_physical_reads/total_logical_writes/total_logical_reads.

Average Duration (ms) – Tiempo promedio que la consulta corre. Calculado en base a las columnas total_elapsed_time y execution_count en la vista sys.dm_query_stats.

Plan Count – El número de planes de consultas duplicados. Un gran número requiere investigación potencial parametrización explícita de consultas.

Requerimientos para usar Activity Monitor

El permiso necesario para ver Activity Monitor es VIEW SERVER STATE.

Para ver el panel Data File I/O, aparte de VIEW SERVER STATE, el inicio de sesión debe tener los permisos CREATE DATABASE, ALTER ANY DATABASE o VIEW ANY DEFINITION.

Para matar un proceso, es necesario ser un miembro del rol sysadmin.

Cómo iniciar Activity Monitor

Hay muchas maneras de iniciar Activity Monitor – en la barra de herramientas de SQL Server Management Studio haga clic en el ícono de Activity Monitor, use el método abreviado del teclado Ctrl + Alt + A, o en Object Explorer haga clic derecho en la instancia SQL Server y seleccione Activity Monitor.

Una opción más es establecer Activity Monitor para abrirse cuando SQL Server Management Studio es iniciado.

  1. En el menú de SQL Server Management Studio haga clic en Tools y luego en Options.
  2. Abra la pestaña Environment | Start Up.
  3. Seleccione la opción Open Object Explorer and Activity Monitor.

La siguiente vez que SQL Server Management Studio se inicie, Object Explorer será mostrado a la izquierda y Activity Monitor a la derecha.

Activity Monitor es una característica de SQL Server Management Studio que rastrea algunas de las más importantes métricas que afectan el desempeño. Muestra las métricas en tiempo real, sin la solución por defecto para grabarlos para un análisis posterior. Filtrar por un(a) base de datos/parámetro es fácil, pero excluir un valor específico no es posible. Tampoco es posible monitorear métricas adicionales. Debido a su conjunto limitado de características y de métricas de monitoreo, no es recomendado para un monitoreo de desempeño en profundidad.

Referencias
[1] Open Activity Monitor (SQL Server Management Studio)
[2] sys.dm_os_tasks (Transact-SQL)
[3] Resource Governor

Recursos útiles
MSDN – Monitoring SQL Server Performance
MSDN – Activity Monitor
Server Performance and Activity Monitoring

Milena Petrovic
168 Views