Compartir a través de


Recopilación de datos y conjuntos de datos del monitor de base de datos (versión preliminar)

Se aplica a:Azure SQL DatabaseAzure SQL Managed Instance

El monitor de base de datos recopila datos de supervisión de vistas del sistema SQL e los ingiere en el almacén de datos en forma de conjuntos de datos. Cada conjunto de datos se forma con los datos de una o varias vistas del sistema SQL. Para cada conjunto de datos, hay una tabla independiente en el almacén de datos.

Recopilación de datos

El monitor de base de datos recopila datos de supervisión a intervalos periódicos mediante consultas T-SQL. Los datos recopilados en cada ejecución de una consulta se denominan muestras. La frecuencia de la recopilación de muestras varía según el conjunto de datos. Por ejemplo, los datos que cambian con frecuencia, como los contadores de rendimiento de SQL, se pueden recopilar cada 10 segundos, mientras que la mayoría de los datos estáticos, como la configuración de la base de datos, se pueden recopilar cada cinco minutos. Para más información, consulte la sección Conjuntos de datos.

El monitor de base de datos aprovecha la ingesta de streaming en Azure Data Explorer y el análisis en tiempo real en Microsoft Fabric para proporcionar supervisión casi en tiempo real. Normalmente, los datos de supervisión de SQL recopilados están disponibles para la elaboración de informes y análisis en menos de 10 segundos. Puede supervisar la latencia de ingesta de datos en los paneles del monitor de base de datos mediante el vínculo Estadísticas de ingesta.

Interacción entre el monitor de base de datos y las cargas de trabajo de la aplicación

No es probable que la activación del vigilante de la base de datos tenga un impacto observable en el rendimiento de la carga de trabajo de la aplicación. Normalmente, las consultas de supervisión más frecuentes se ejecutan en el intervalo de sub-segundo, mientras que las consultas que pueden requerir más tiempo (por ejemplo, para devolver grandes conjuntos de datos) se ejecutan con intervalos poco frecuentes.

Para reducir aún más el riesgo de impacto en las cargas de trabajo de la aplicación, todas las consultas del monitor de base de datos de Azure SQL Database se rigen por recursos como una carga de trabajo interna. Cuando hay contención de recursos, el consumo de recursos por parte de las consultas de supervisión se limita a una pequeña fracción de los recursos totales disponibles para la base de datos. Esto da prioridad a las cargas de trabajo de la aplicación sobre las consultas de supervisión.

Para evitar conflictos de concurrencia como bloqueos y bloqueos muertos entre las cargas de trabajo de recopilación de datos y de base de datos que se ejecutan en sus recursos Azure SQL, las consultas de supervisión utilizan tiempos de espera de bloqueo cortos y prioridad de interbloqueo baja. Si hay un conflicto de simultaneidad, se asigna prioridad a las consultas de carga de trabajo de la aplicación.

Es posible que observe brechas en los datos recopilados en los escenarios siguientes:

  • Si el uso general de recursos es alto o si se producen conflictos de simultaneidad entre las consultas de supervisión y las cargas de trabajo de la aplicación. En estos casos, las consultas de supervisión se desprioritizan en favor de las cargas de trabajo de aplicación.
  • Si dispone de automatización que finalice las sesiones de ejecución prolongada. Para evitar lagunas en los datos recopilados, excluya cualquier sesión en la que la program_name columna de la vista del sistema sys.dm_exec_sessions sea SQLExternalMonitoring o x_ms_reserved_sql_external_monitoring.

Recopilación de datos en grupos elásticos

Para supervisar un grupo elástico, debe designar una base de datos en el grupo como base de datos de anclaje. Un observador se conecta a la base de datos de anclaje. Dado que el monitor contiene el permiso VIEW SERVER PERFORMANCE STATE, las vistas del sistema de la base de datos de anclaje proporcionan datos de supervisión para el grupo en su conjunto.

Sugerencia

Puede agregar una base de datos vacía a cada grupo elástico que quiera supervisar y designarla como base de datos de anclaje. De este modo, puede mover otras bases de datos dentro y fuera del grupo, o entre grupos, sin interrumpir la supervisión del grupo elástico.

Los datos recopilados de la base de datos de anclaje contienen métricas a nivel de grupo y determinadas métricas de rendimiento a nivel de base de datos para cada base de datos del grupo, como la utilización de recursos y las métricas de tasa de solicitud para cada base de datos. En algunos casos, la adición de un objetivo SQL de grupo elástico para supervisar un grupo elástico en su conjunto puede hacer innecesario supervisar cada base de datos individual del grupo.

Ciertos datos de monitorización como la CPU a nivel de grupo, la memoria, la utilización del almacenamiento y las estadísticas de espera solo se recopilan a nivel de grupo elástico porque no pueden atribuirse a una base de datos individual en un grupo. Por el contrario, otros datos como las estadísticas de tiempo de ejecución de consultas, las propiedades de la base de datos y los metadatos de tablas e índices solo están disponibles si se añaden bases de datos individuales como destinos SQL.

Si añade bases de datos individuales de un grupo elástico como destinos SQL, debe añadir también el grupo elástico como destino SQL. De este modo, obtendrá una vista más completa del rendimiento de la base de datos y del grupo.

Supervisión de grupos elásticos densos

Un grupo elástico denso contiene una gran cantidad de bases de datos, pero tiene un tamaño de proceso relativamente pequeño. Esta configuración permite a los clientes lograr un ahorro considerable de costos manteniendo la asignación de recursos de proceso al mínimo.

Lo importante es que este enfoque supone que solo un pequeño número de bases de datos del grupo tiene consultas que se ejecutan al mismo tiempo.

Advertencia

Dado que las consultas de supervisión deben ejecutarse continuamente en cada base de datos supervisada, no se recomienda supervisar más de unas pocas bases de datos individuales en un grupo elástico denso.

Si agrega muchas bases de datos de un grupo elástico denso como destinos SQL, el uso acumulativo de recursos por parte de las consultas de supervisión que se ejecutan en cada base de datos podría afectar a las cargas de trabajo de la aplicación debido a recursos insuficientes en el grupo.

Por el mismo motivo, es posible que vea lagunas en los datos recopilados o intervalos mayores que los esperados entre las muestras de datos.

Para supervisar un grupo elástico denso, habilite la supervisión en el nivel de grupo agregando el propio grupo elástico como destino DE SQL. Al reducir el número total de consultas de supervisión en el grupo elástico, se evita el riesgo de afectar a las cargas de trabajo de aplicaciones, a la vez que se recopilan datos de nivel de grupo accionables en los conjuntos de datos del grupo elástico de SQL.

Recopilación de datos en bases de datos sin servidor

Si una base de datos sin servidor tiene la pausa automática deshabilitada, el monitor de base de datos la supervisa igual que una base de datos provisionada.

Si habilita la pausa automática en una base de datos sin servidor, la recopilación de datos del monitor de base de datos se detiene cuando la base de datos se detiene. Las consultas de supervisión del monitor de base de datos no impiden que una base de datos sin servidor se detenga si es apta para pausarse en caso contrario.

Poco después de que una base de datos sin servidor pase a un estado Pausado , su estado en el panel de resumen del monitor cambia a No recopilar. Los datos recopilados anteriormente para la base de datos permanecen en el almacén de datos del observador y son accesibles a través de tableros de control y consultas.

La recopilación de datos se reanuda en cuestión de minutos después de que la base de datos pase del estado Pausado al estado En línea .

Residencia de datos

Los clientes pueden elegir almacenar los datos de supervisión de SQL recopilados en uno de los tres tipos de almacenes de datos:

  • Una base de datos en un clúster Azure Data Explorer. De forma predeterminada, se crea un nuevo clúster de Azure Data Explorer para cada nuevo observador y se encuentra en la misma región de Azure que el observador.

    Los clientes pueden elegir la región Azure específica en una geografía Azure como la ubicación de su clúster Azure Data Explorer y la base de datos. Para obtener más información sobre las capacidades de replicación de datos en Azure Data Explorer, consulte Descripción general de continuidad del negocio y recuperación ante desastres.

  • Una base de datos en un clúster libre de Azure Data Explorer.

    Los clientes pueden elegir la geografía específica de Azure, pero no la región específica de Azure como ubicación de su clúster gratuito de Azure Data Explorer y la base de datos. No se admite la replicación de datos a una región o geografía diferente.

  • Una base de datos en análisis en tiempo real en Microsoft Fabric.

    Los clientes no pueden elegir la ubicación geográfica de la base de datos.

Para controlar totalmente la residencia de los datos de supervisión de SQL recopilados, los clientes deben elegir una base de datos en un clúster de Azure Data Explorer como almacén de datos.

Los clientes pueden alinear la geografía y la región de su clúster de Azure Data Explorer con la geografía y la región de los recursos de Azure SQL que se supervisan. Cuando los recursos de Azure SQL se encuentran en varias regiones, es posible que los clientes necesiten crear varios observadores y varios clústeres de Azure Data Explorer para satisfacer sus requisitos de residencia de datos.

Conjuntos de datos

En esta sección se describen los conjuntos de datos disponibles para cada tipo de destino SQL, incluidas las frecuencias de recopilación y los nombres de tabla en el almacén de datos.

Nota

Durante la versión preliminar, es posible que se agreguen y quiten conjuntos de datos. Las propiedades del conjunto de datos, como el nombre, la descripción, la frecuencia de recopilación y las columnas disponibles están sujetas a cambios.

Nombre del conjunto de datos Nombre de la tabla Frecuencia de recopilación (hh:mm:ss) Descripción
Sesiones activas sqldb_database_active_sessions 00:00:30 Cada fila representa una sesión que ejecuta una solicitud, es un bloqueador o tiene una transacción abierta.
Historial de copias de seguridad sqldb_database_sql_backup_history 00:05:00 Cada fila representa una copia de seguridad de base de datos que se completó correctamente.
Cambiar procesamiento sqldb_database_change_processing 00:01:00 Cada fila representa una instantánea de estadísticas de análisis de registros agregados correspondientes a una característica de procesamiento de cambios, como captura de datos modificados o fuente de cambios (Azure Synapse Link).
Cambiar errores de procesamiento sqldb_database_change_processing_errors 00:01:00 Cada fila representa un error que se produjo durante el procesamiento de cambios, cuando se usa una característica de procesamiento de cambios, como captura de datos modificados o fuente de cambios (Azure Synapse Link).
Conectividad sqldb_database_connectivity 00:00:30 Cada fila representa un sondeo de conectividad (un inicio de sesión y una consulta) correspondiente a una base de datos.
Réplicas geográficas sqldb_database_geo_replicas 00:00:30 Cada fila representa una réplica geográfica principal o secundaria, lo que incluye los metadatos y estadísticas de replicación geográfica.
Metadatos de índice sqldb_database_index_metadata 00:30:00 Cada fila representa una partición de índice e incluye la definición de índice, las propiedades y las estadísticas operativas.
Uso de memoria sqldb_database_memory_utilization 00:00:30 Cada fila representa un distribuidor de memoria e incluye el consumo de memoria por parte del distribuidor en la instancia del motor de base de datos.
Faltan índices sqldb_database_missing_indexes 00:15:00 Cada fila representa un índice que podría mejorar el rendimiento de las consultas si se crea.
Eventos de memoria insuficiente sqldb_database_oom_events 00:01:00 Cada fila representa un evento de memoria insuficiente en el motor de base de datos.
Contadores de rendimiento (comunes) sqldb_database_performance_counters_common 00:00:10 Cada fila representa un contador de rendimiento de la instancia del motor de base de datos. Este conjunto de datos incluye contadores utilizados habitualmente.
Contadores de rendimiento (detallados) sqldb_database_performance_counters_detailed 00:01:00 Cada fila representa un contador de rendimiento de la instancia del motor de base de datos. Este conjunto de datos incluye contadores que podrían ser necesarios para la supervisión detallada y la solución de problemas.
Propiedades sqldb_database_properties 00:05:00 Cada fila representa una base de datos e incluye opciones de base de datos, límites de gobernanza de recursos y otros metadatos de base de datos.
Estadísticas de tiempo de ejecución de consultas sqldb_database_query_runtime_stats 00:15:00 Cada fila representa un intervalo de tiempo de ejecución del almacén de consultas e incluye estadísticas de ejecución de consultas.
Estadísticas de espera de consulta sqldb_database_query_wait_stats 00:15:00 Cada fila representa un intervalo de tiempo de ejecución del almacén de consultas e incluye estadísticas de categoría de espera.
Réplicas sqldb_database_replicas 00:00:30 Cada fila representa una réplica de base de datos, lo que incluye los metadatos y estadísticas de replicación. Incluye la réplica principal y las réplicas geográficas cuando se recopilan en la principal, y las réplicas secundarias cuando se recopilan en una secundaria.
Utilización de recursos sqldb_database_resource_utilization 00:00:15 Cada fila representa la CPU, E/S de datos, E/S de registro y otras estadísticas de consumo de recursos correspondientes a una base de datos en un intervalo de tiempo.
Estadísticas de sesión sqldb_database_session_stats 00:01:00 Cada fila representa un resumen de las estadísticas de sesión de una base de datos, compuestas por atributos de sesión no aditivos, como el nombre de inicio de sesión, el nombre de host, el nombre de la aplicación, etc.
Programadores de SOS sqldb_database_sos_schedulers 00:01:00 Cada fila representa un programador de SOS e incluye estadísticas para el programador, el nodo de CPU y el nodo de memoria.
E/S de almacenamiento sqldb_database_storage_io 00:00:10 Cada fila representa un archivo de base de datos e incluye las estadísticas acumulativas de IOPS, rendimiento y latencia del archivo.
Uso del almacenamiento sqldb_database_storage_utilization 00:01:00 Cada fila representa una base de datos e incluye su uso de almacenamiento, además de tempdb, el almacén de consultas y el almacén de versiones persistente.
Metadatos de tabla sqldb_database_table_metadata 00:30:00 Cada fila representa una tabla o una vista indizada e incluye metadatos como recuento de filas, uso de espacio, compresión de datos, columnas y restricciones. Se recopila cuando el número de tablas y vistas indizadas de la base de datos es de 100 o menos.
Estadísticas de espera sqldb_database_wait_stats 00:00:10 Cada fila representa un tipo de espera e incluye estadísticas de espera acumulativas de la instancia del motor de base de datos. En el caso de las bases de datos de un grupo elástico, solo se recopilan estadísticas de espera con ámbito de base de datos.

Nota

En el caso de las bases de datos de un grupo elástico, no se recopilan los conjuntos de datos de SQL Database que contienen datos de nivel de grupo. Esto incluye el uso de memoria, los eventos de memoria insuficiente, los contadores de rendimiento (comunes) y los conjuntos de datos de contadores de rendimiento (detallados). El conjunto de datos de estadísticas de espera se recopila, pero solo contiene esperas con ámbito de base de datos. Esto evita la recopilación de los mismos datos de todas las bases de datos del grupo.

Los datos de nivel de grupo se recopilan en los conjuntos de datos del grupo elástico de SQL. En el caso de un grupo elástico determinado, los contadores de rendimiento (comunes) y los conjuntos de datos de contadores de rendimiento (detallados) contienen métricas de nivel de grupo y métricas de nivel de base de datos específicas, como CPU, E/S de datos, Escritura de registros, Solicitudes, Transacciones, etc.

Columnas comunes

Para cada tipo de destino SQL, los conjuntos de datos tienen columnas comunes, como se describe en las tablas siguientes.

Nombre de la columna Descripción
subscription_id Id. de suscripción de Azure de la base de datos SQL.
resource_group_name El nombre del grupo de recursos de la base de datos SQL.
resource_id Id. de recurso de Azure de la base de datos SQL.
sample_time_utc La hora a la que se observaron los valores de la fila, en UTC.
collection_time_utc Hora a la que el monitor recopiló la fila, en UTC. Esta columna está presente en conjuntos de datos en los que el tiempo de recopilación podría ser diferente del tiempo de muestra.
replica_type Uno de los elementos siguientes: principal, secundario de alta disponibilidad, reenviador de replicación geográfica, secundario con nombre.
logical_server_name El nombre del servidor lógico de base de datos de Azure SQL que contiene la base de datos o el grupo elástico supervisados.
database_name El nombre de la base de datos supervisada.
database_id Id. de base de datos de la base de datos supervisada, único dentro del servidor lógico.
logical_database_id Un identificador de base de datos único que permanece sin cambios durante la vigencia de la base de datos de usuario. Cambiar el nombre de la base de datos o cambiar su objetivo de servicio no cambia este valor.
physical_database_id Un identificador de base de datos único para la base de datos física actual correspondiente a la base de datos de usuario. Cambiar el objeto de servicio de la base de datos hace que este valor cambie.
replica_id Un identificador único de una réplica de proceso de hiperescala.

Un conjunto de datos tiene las columnas sample_time_utc y collection_time_utc si contiene muestras observadas antes de que el monitor de base de datos recopile la fila. De lo contrario, el tiempo de observación y la hora de recopilación son los mismos y el conjunto de datos solo contiene la columna sample_time_utc.

Por ejemplo, el conjunto de datos sqldb_database_resource_utilization se deriva de la vista de administración dinámica (DMV) sys.dm_db_resource_stats. La DMV contiene la columna end_time, que es el tiempo de observación de cada fila que informa sobre estadísticas de recursos agregados durante un intervalo de 15 segundos. Este tiempo se informa en la columna sample_time_utc. Cuando un monitor consulta esta DMV, el conjunto de resultados puede contener varias filas, cada una con un valor diferente end_time. Todas estas filas tienen el mismo valor collection_time_utc.