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.

datos, recopilación

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 los 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

Es probable que la habilitación del monitor de base de datos tenga un impacto visible en las cargas 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 la contención de recursos está presente, el consumo de estos mediante consultas de supervisión se limita a una pequeña fracción de los recursos totales disponibles para una base de datos o un grupo elástico. Esto da prioridad a las cargas de trabajo de la aplicación sobre las consultas de supervisión.

Si lo considera necesario, en Azure SQL Managed Instance puede habilitar Resource Governor para administrar el consumo de recursos mediante las consultas de supervisión de forma similar.

En el ejemplo siguiente se configura Resource Governor en una instancia administrada de SQL. Limita el consumo de CPU por parte de las consultas del monitor de base de datos al 30 % cuando no hay contención de CPU. Cuando hay contención de CPU, esta configuración reserva el 5 % de la CPU para las consultas de supervisión y limita su uso de CPU al 10 %. También limita el tamaño de concesión de memoria para cada consulta de supervisión al 10 % de la memoria disponible.

USE master;
GO

CREATE OR ALTER FUNCTION dbo.dbw_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN

DECLARE @WorkloadGroupName sysname = 'default';

IF APP_NAME() IN (N'SQLExternalMonitoring',N'x_ms_reserved_sql_external_monitoring')
    SET @WorkloadGroupName = N'database_watcher_workload_group'

RETURN @WorkloadGroupName;

END;
GO

BEGIN TRY

IF EXISTS (
          SELECT 1
          FROM sys.resource_governor_configuration
          WHERE classifier_function_id <> 0 OR is_enabled <> 0
          )
    THROW 50001, 'Resource Governor is already configured. No changes were made.', 1;

CREATE RESOURCE POOL database_watcher_resource_pool
WITH (MIN_CPU_PERCENT = 5, MAX_CPU_PERCENT = 10, CAP_CPU_PERCENT = 30);

CREATE WORKLOAD GROUP database_watcher_workload_group
WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10)
USING database_watcher_resource_pool;

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.dbw_classifier);

ALTER RESOURCE GOVERNOR RECONFIGURE;

END TRY
BEGIN CATCH
    THROW;
END CATCH;

Nota:

Para que la configuración de Resource Governor tenga un efecto inmediato en una réplica secundaria de alta disponibilidad de una instancia administrada de SQL, conéctese a la réplica y ejecute ALTER RESOURCE GOVERNOR RECONFIGURE;.

Para evitar conflictos de simultaneidad, como bloqueos e interbloqueos entre cargas de trabajo de recopilación de datos y bases de datos que se ejecutan en los recursos de Azure SQL, la supervisión de consultas utiliza tiempos de expiración de bloqueo cortos y una prioridad de interbloqueo baja. Si hay un conflicto de simultaneidad, se asigna prioridad a las consultas de carga de trabajo de la aplicación. En función de los patrones de carga de trabajo de la aplicación, esto puede provocar brechas ocasionales en los datos recopilados de algunos conjuntos de datos.

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. El monitor de base de datos 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 como 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 de nivel de grupo y ciertas métricas de rendimiento de nivel de base de datos correspondientes a cada base de datos del grupo. Por ejemplo, esto incluye métricas de uso de recursos y tasa de solicitudes de cada base de datos. En algunos escenarios, la supervisión de un grupo elástico como conjunto hace que no sea necesario supervisar las base de datos del grupo de manera individual.

Algunos datos de supervisión, como la CPU de nivel de grupo, la memoria y el uso del almacenamiento, y las estadísticas de espera solo se recopilan en el nivel de grupo elástico porque no se pueden atribuir a una base de datos individual de un grupo. Por el contrario, algunos otros datos como estadísticas de tiempo de ejecución de consultas, propiedades de base de datos, metadatos de tabla e índice solo están disponibles en el nivel de base de datos.

Si agrega bases de datos individuales de un grupo elástico como destinos del monitor de base de datos, también debe agregar el grupo elástico como destino. 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 ahorros considerables de costes manteniendo la asignación de recursos de proceso a un mínimo en la suposición de que solo un pequeño número de bases de datos del grupo están activas al mismo tiempo.

Los recursos de proceso disponibles para las consultas del monitor de base de datos en un grupo elástico denso están más limitados para evitar que afecten a las consultas de la aplicación. Debido a esto, es posible que el monitor de base de datos no pueda recopilar datos de supervisión de todas las bases de datos de un grupo elástico denso.

Sugerencia

Para supervisar un grupo elástico denso, habilite la supervisión en el nivel de grupo agregando el grupo elástico como destino.

No se recomienda supervisar más de unas pocas bases de datos individuales en un grupo elástico denso. Es posible que vea brechas en los datos recopilados o intervalos mayores que los esperados entre muestras de datos debido a recursos de proceso insuficientes disponibles para las consultas del monitor de base de datos.

Conjuntos de datos

En esta sección se describen los conjuntos de datos disponibles para cada tipo de destino, como 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 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:10 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:10 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 base de datos principal y las réplicas secundarias cuando se recopilan en una base de datos 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 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.
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

En el caso de cada tipo de destino, los conjuntos de datos tienen columnas comunes, como se describe en las tablas siguientes.

Nombre de la columna Descripción
sample_time_utc La hora a la que se observaron los valores de la fila, en UTC.
collection_time_utc La 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: 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 El id. de base de datos, ú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 objeto 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 el monitor de base de datos consulta esta DMV, el conjunto de resultados puede contener varias filas, cada una con un valor end_time diferente. Todas estas filas tienen el mismo valor collection_time_utc.