Partilhar via


Coleta de dados e conjuntos de dados do monitor de banco de dados (pré-visualização)

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada SQL do Azure

O inspetor de banco de dados recolhe dados de monitorização de visões do sistema SQL e insere-os no armazenamento de dados na forma de conjuntos de dados. Cada conjunto de dados é formado usando os dados de uma ou mais exibições do sistema SQL. Para cada conjunto de dados, há uma tabela separada no armazenamento de dados.

Recolha de dados

O inspetor de banco de dados coleta dados de monitoramento em intervalos periódicos usando consultas T-SQL. Os dados coletados em cada execução de uma consulta são chamados de exemplo. A frequência de coleta de amostras varia de acordo com o conjunto de dados. Por exemplo, dados que mudam com frequência, como contadores de desempenho SQL, podem ser coletados a cada 10 segundos, enquanto a maioria dos dados estáticos, como a configuração do banco de dados, pode ser coletada a cada cinco minutos. Para obter mais informações, consulte Conjuntos de dados.

O inspetor de banco de dados aproveita a ingestão de streaming no Azure Data Explorer e noReal-Time Analytics no Microsoft Fabric para fornecer monitoramento quase em tempo real. Normalmente, os dados de monitoramento SQL coletados ficam disponíveis para relatórios e análises em menos de 10 segundos. Você pode monitorar a latência de ingestão de dados nos painéis do inspetor do banco de dados, usando o link Estatísticas de ingestão .

Interação entre o inspetor de banco de dados e as cargas de trabalho do aplicativo

Não é provável que habilitar o inspetor de banco de dados tenha um impacto observável no desempenho da carga de trabalho do aplicativo. Consultas de monitoramento mais frequentes geralmente são executadas no intervalo de subsegundos, enquanto consultas que podem exigir mais tempo, por exemplo, para retornar grandes conjuntos de dados, são executadas em intervalos pouco frequentes.

Para reduzir ainda mais o risco de impacto nas cargas de trabalho do aplicativo, todas as consultas do inspetor de banco de dados no Banco de Dados SQL do Azure são controladas por recursos como uma carga de trabalho interna. Quando a contenção de recursos está presente, o consumo de recursos pelas consultas de monitoramento é limitado a uma pequena fração do total de recursos disponíveis para o banco de dados. Isso prioriza cargas de trabalho de aplicativos sobre consultas de monitoramento.

Para evitar conflitos de concorrência, como bloqueio e impasses entre a coleta de dados e cargas de trabalho de banco de dados em execução nos seus recursos SQL do Azure, as consultas de monitorização usam tempos limite de bloqueio curtos e baixa prioridade de impasse. Se houver um conflito de simultaneidade, a prioridade será dada às consultas de carga de trabalho do aplicativo.

Você pode observar lacunas nos dados coletados nos seguintes cenários:

  • Se a utilização geral de recursos for alta ou se ocorrerem conflitos de simultaneidade entre consultas de monitoramento e cargas de trabalho de aplicativos. Nesses casos, as consultas de monitoramento são despriorizadas em favor das cargas de trabalho do aplicativo.
  • Se você tiver automação que encerra sessões de longa duração. Para evitar lacunas nos dados coletados, exclua qualquer sessão em que a program_name coluna na visualização do sistema sys.dm_exec_sessions seja SQLExternalMonitoring ou x_ms_reserved_sql_external_monitoring.

Coleta de dados em pools elásticos

Para monitorar um pool elástico, você deve designar um banco de dados no pool como o banco de dados âncora. Um observador se conecta ao banco de dados âncora. Como o observador detém a VIEW SERVER PERFORMANCE STATE permissão, as exibições do sistema no banco de dados âncora fornecem dados de monitoramento para o pool como um todo.

Sugestão

Você pode adicionar um banco de dados vazio a cada pool elástico que deseja monitorar e designá-lo como o banco de dados âncora. Dessa forma, você pode mover outros bancos de dados para dentro e para fora do pool, ou entre pools, sem interromper o monitoramento do pool elástico.

Os dados coletados do banco de dados âncora contêm métricas no nível do pool e determinadas métricas de desempenho no nível do banco de dados para cada banco de dados no pool, como métricas de utilização de recursos e taxa de solicitação para cada banco de dados. Para alguns cenários, adicionar um destino SQL de pool elástico para monitorar um pool elástico como um todo pode tornar desnecessário monitorar cada banco de dados individual no pool.

Determinados dados de monitoramento, como CPU no nível do pool, memória, utilização do armazenamento e estatísticas de espera, são coletados apenas no nível do pool elástico porque não podem ser atribuídos a um banco de dados individual em um pool. Por outro lado, alguns outros dados, como estatísticas de tempo de execução de consulta, propriedades de banco de dados, metadados de tabela e índice, só estarão disponíveis se você adicionar bancos de dados individuais como destinos SQL.

Se você adicionar bancos de dados individuais de um pool elástico como destinos SQL, deverá adicionar o pool elástico como um destino SQL também. Dessa forma, você obtém uma visão mais completa do desempenho do banco de dados e do pool.

Monitore pools elásticos densos

Um pool elástico denso contém um grande número de bancos de dados, mas tem um tamanho de computação relativamente pequeno. Essa configuração permite que os clientes obtenham economias substanciais de custos, mantendo a alocação de recursos de computação a um mínimo.

É importante ressaltar que essa abordagem pressupõe que apenas um pequeno número de bancos de dados no pool tenha consultas em execução ao mesmo tempo.

Advertência

Como as consultas de monitoramento devem ser executadas continuamente em todos os bancos de dados monitorados, não é recomendável monitorar mais do que alguns bancos de dados individuais em um pool elástico denso.

Se você adicionar muitos bancos de dados de um pool elástico denso como destinos SQL, a utilização cumulativa de recursos pelas consultas de monitoramento em execução em cada banco de dados poderá afetar as cargas de trabalho do aplicativo devido à insuficiência de recursos no pool.

Pelo mesmo motivo, você pode ver lacunas nos dados coletados ou intervalos maiores do que o esperado entre as amostras de dados.

Para monitorar um pool elástico denso, habilite o monitoramento no nível do pool adicionando o próprio pool elástico como um destino SQL. Ao reduzir o número total de consultas de monitoramento no pool elástico, você evita o risco de afetar as cargas de trabalho do aplicativo e, ao mesmo tempo, coleta dados acionáveis no nível do pool nos conjuntos de dados do pool elástico SQL.

Recolha de dados em bases de dados sem servidor

Se um banco de dados sem servidor tiver a pausa automática desabilitada, o inspetor de banco de dados o monitorará como um banco de dados provisionado.

Se você habilitar a pausa automática em um banco de dados sem servidor, a coleta de dados do inspetor de banco de dados será interrompida quando o banco de dados for pausado. As consultas de monitoramento do inspetor de banco de dados não impedem que um banco de dados sem servidor pause se estiver qualificado para ser pausado de outra forma.

Logo após a transição de um banco de dados sem servidor para um estado Pausado , seu status no painel de resumo do observador muda para Não coletar. Os dados coletados anteriormente para o banco de dados permanecem no armazenamento de dados do observador e podem ser acessados por meio de painéis e consultas.

A coleta de dados é retomada em poucos minutos após a transição do banco de dados do estado Pausado para o estado Online .

Residência de dados

Os clientes podem optar por armazenar os dados de monitoramento SQL coletados em um dos três tipos de armazenamento de dados:

  • Um banco de dados em um cluster do Azure Data Explorer . Por padrão, um novo cluster do Azure Data Explorer é criado para cada novo observador e está localizado na mesma região do Azure que o inspetor.

    Os clientes podem escolher a região específica do Azure em uma geografia do Azure como o local do cluster do Azure Data Explorer e do banco de dados. Para obter mais informações sobre os recursos de replicação de dados no Azure Data Explorer, consulte Visão geral de continuidade de negócios e recuperação de desastres.

  • Um banco de dados em um cluster gratuito do Azure Data Explorer.

    Os clientes podem escolher a geografia específica do Azure, mas não a região específica do Azure como o local do cluster gratuito do Azure Data Explorer e do banco de dados. Não há suporte para replicação de dados para uma região ou geografia diferente.

  • Uma base de dados no Real-Time Analytics no Microsoft Fabric.

    Os clientes não podem escolher a localização geográfica da base de dados.

Para controlar totalmente a residência de dados para dados de monitoramento SQL coletados, os clientes devem escolher um banco de dados em um cluster do Azure Data Explorer como o armazenamento de dados.

Os clientes podem alinhar a geografia e a região do cluster do Azure Data Explorer à geografia e à região dos recursos SQL do Azure que estão sendo monitorados. Quando os recursos SQL do Azure estão localizados em várias regiões, os clientes podem precisar criar vários observadores e vários clusters do Azure Data Explorer para satisfazer seus requisitos de residência de dados.

Conjuntos de dados

Esta seção descreve os conjuntos de dados disponíveis para cada tipo de destino SQL, incluindo freqüências de coleta e nomes de tabelas no armazenamento de dados.

Observação

Durante a visualização, os conjuntos de dados podem ser adicionados e removidos. As propriedades do conjunto de dados, como nome, descrição, frequência de coleta e colunas disponíveis, estão sujeitas a alterações.

Nome do conjunto de dados Nome da tabela Frequência de recolha (hh:mm:ss) Descrição
Sessões ativas sqldb_database_active_sessions 00:00:30 Cada linha representa uma sessão que está executando uma solicitação, é um bloqueador ou tem uma transação aberta.
Histórico de backup sqldb_database_sql_backup_history 00:05:00 Cada linha representa um backup de banco de dados concluído com êxito.
Processamento de alterações sqldb_database_change_processing 00:01:00 Cada linha representa uma imagem instantânea das estatísticas agregadas de análise de log para um recurso de processamento de alterações, como o Change Data Capture ou Change Feed (Azure Synapse Link).
Alterar erros de processamento sqldb_database_change_processing_errors 00:01:00 Cada linha representa um erro que ocorreu durante o processamento de alterações, ao usar um recurso de processamento de alterações, como Captura de Dados de Alteração ou Feed de Alterações (Azure Synapse Link).
Conectividade sqldb_database_connectivity 00:00:30 Cada linha representa uma sonda de conectividade (um login e uma consulta) para um banco de dados.
Geo-réplicas sqldb_database_geo_replicas 00:00:30 Cada linha representa uma réplica geográfica primária ou secundária, incluindo metadados e estatísticas de replicação geográfica.
Metadados do índice sqldb_database_index_metadata 00:30:00 Cada linha representa uma partição de índice e inclui definição de índice, propriedades e estatísticas operacionais.
Utilização da memória sqldb_database_memory_utilization 00:00:30 Cada linha representa um gestor de memória e inclui o consumo de memória pelo gestor na instância do motor de base de dados.
Índices em falta sqldb_database_missing_indexes 00:15:00 Cada linha representa um índice que pode melhorar o desempenho da consulta, se criado.
Eventos de falta de memória sqldb_database_oom_events 00:01:00 Cada linha representa um evento de falta de memória no mecanismo de banco de dados.
Contadores de desempenho (comuns) sqldb_database_performance_counters_common 00:00:10 Cada linha representa um contador de desempenho da instância do mecanismo de banco de dados. Este conjunto de dados inclui contadores comumente usados.
Contadores de desempenho (detalhados) sqldb_database_performance_counters_detailed 00:01:00 Cada linha representa um contador de desempenho da instância do mecanismo de banco de dados. Esse conjunto de dados inclui contadores que podem ser necessários para monitoramento detalhado e solução de problemas.
Propriedades sqldb_database_properties 00:05:00 Cada linha representa um banco de dados e inclui opções de banco de dados, limites de governança de recursos e outros metadados de banco de dados.
Estatísticas de tempo de execução de consulta sqldb_database_query_runtime_stats 00:15:00 Cada linha representa um intervalo de tempo de execução do Repositório de Consultas e inclui estatísticas de execução de consulta.
Estatísticas de latência de consulta sqldb_database_query_wait_stats 00:15:00 Cada linha representa um intervalo de tempo de execução do Repositório de Consultas e inclui estatísticas de categoria de espera.
Réplicas sqldb_database_replicas 00:00:30 Cada linha representa uma réplica de banco de dados, incluindo metadados de replicação e estatísticas. Inclui a réplica principal e as réplicas geográficas quando recolhidas na principal, e as réplicas secundárias quando recolhidas numa secundária.
Utilização de recursos sqldb_database_resource_utilization 00:00:15 Cada linha representa CPU, E/S de dados, E/S de log e outras estatísticas de consumo de recursos para um banco de dados num intervalo de tempo.
Estatísticas da sessão sqldb_database_session_stats 00:01:00 Cada linha representa um resumo das estatísticas de sessão para um banco de dados, agregadas por atributos de sessão não aditivos, como nome de login, nome do host, nome do aplicativo, etc.
Agendadores SOS sqldb_database_sos_schedulers 00:01:00 Cada linha representa um agendador SOS e inclui estatísticas para o agendador, o nó da CPU e o nó de memória.
E/S de armazenamento sqldb_database_storage_io 00:00:10 Cada linha representa um arquivo de banco de dados e inclui IOPS cumulativas, taxa de transferência e estatísticas de latência para o arquivo.
Utilização do armazenamento sqldb_database_storage_utilization 00:01:00 Cada linha representa uma base de dados e inclui o seu uso de armazenamento, incluindo tempdb, Repositório de Consultas e Repositório de Versão Persistente.
Metadados de tabelas sqldb_database_table_metadata 00:30:00 Cada linha representa uma tabela ou uma exibição indexada e inclui metadados como contagem de linhas, uso de espaço, compactação de dados, colunas e restrições. Coletado quando o número de tabelas e exibições indexadas no banco de dados é 100 ou menos.
Aguarde estatísticas sqldb_database_wait_stats 00:00:10 Cada linha representa um tipo de espera e inclui estatísticas de espera cumulativa da instância do mecanismo de banco de dados. Para bancos de dados em um pool elástico, apenas as estatísticas de espera com escopo de banco de dados são coletadas.

Observação

Para bancos de dados em um pool elástico, os conjuntos de dados do banco de dados SQL que contêm dados no nível do pool não são coletados. Isso inclui os conjuntos de dados Utilização de memória, Falta de memória, Contadores de desempenho (comuns) e Contadores de desempenho (detalhados). O conjunto de dados de estatísticas de espera é recolhido, mas contém apenas esperas restritas ao âmbito da base de dados. Isso evita a coleta dos mesmos dados de todos os bancos de dados do pool.

Os dados no nível do pool são coletados nos conjuntos de dados do pool elástico SQL . Para um determinado pool elástico, os contadores de desempenho (comuns) e os contadores de desempenho (detalhados) contêm métricas no nível do pool e determinadas métricas no nível do banco de dados, como CPU, E/S de dados, gravação de log, solicitações, transações, etc.

Colunas comuns

Para cada tipo de destino SQL, os conjuntos de dados têm colunas comuns, conforme descrito nas tabelas a seguir.

Nome da coluna Descrição
subscription_id O ID de subscrição do Azure da base de dados SQL.
resource_group_name O nome do grupo de recursos do banco de dados SQL.
resource_id O ID do recurso do Azure do banco de dados SQL.
sample_time_utc A hora em que os valores na linha foram observados, em UTC.
collection_time_utc A hora em que a linha foi recolhida pelo observador, em UTC. Esta coluna está presente em conjuntos de dados onde o tempo de coleta pode ser diferente do tempo de amostragem.
replica_type Um dos: Primário, HA secundário, Encaminhador de replicação geográfica, Nomeado secundário.
logical_server_name O nome do servidor lógico no Banco de Dados SQL do Azure que contém o banco de dados monitorado ou pool elástico.
database_name O nome do banco de dados monitorado.
database_id ID do banco de dados monitorado, exclusivo dentro do servidor lógico.
logical_database_id Um identificador de banco de dados exclusivo que permanece inalterado ao longo do tempo de vida do banco de dados do usuário. Renomear o banco de dados ou alterar seu objetivo de serviço não altera esse valor.
physical_database_id Um identificador de banco de dados exclusivo para o banco de dados físico atual correspondente ao banco de dados do usuário. Alterar o objetivo do serviço de banco de dados faz com que esse valor seja alterado.
replica_id Um identificador exclusivo para uma réplica de computação Hyperscale.

Um conjunto de dados tem as colunas sample_time_utc e collection_time_utc se contiver amostras observadas antes da linha ter sido recolhida pelo observador de banco de dados. Caso contrário, o tempo de observação e o tempo de coleta são os mesmos, e o conjunto de dados contém apenas a sample_time_utc coluna.

Por exemplo, o sqldb_database_resource_utilization conjunto de dados é derivado da vista de gestão dinâmica sys.dm_db_resource_stats (DMV). O DMV contém a coluna end_time, que representa o tempo de observação para cada linha que relata estatísticas agregadas de recursos durante um intervalo de 15 segundos. Este tempo é relatado na coluna sample_time_utc. Quando um observador consulta esse Detran, o conjunto de resultados pode conter várias linhas, cada uma com um end_timearquivo . Todas essas linhas têm o mesmo collection_time_utc valor.