Conjuntos e coleção de dados do observador de dados (preview)
Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
O observador de banco de dados coleta dados de monitoramento de exibições do sistema SQL e os ingere 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.
Coleta de dados
O observador 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 denominados amostra. A frequência de coleta de amostra varia de acordo com o conjunto de dados. Por exemplo, dados que mudam com frequência, como contadores de desempenho de SQL, podem ser coletados a cada dez segundos, enquanto a maioria dos dados estáticos, como a configuração do banco de dados, pode ser coletada a cada cinco minutos. Para saber mais, confira Conjuntos de dados
O observador de banco de dados aproveita a ingestão de streaming no Azure Data Explorer e a Análise em Tempo Real no Microsoft Fabric para fornecer monitoramento quase em tempo real. Normalmente, os dados de monitoramento de SQL coletados ficam disponíveis para relatórios e análises em menos de dez segundos. Você pode monitorar a latência de ingestão de dados nos painéis do observador de banco de dados usando o link Estatísiticas de ingestão.
Interação entre o observador de banco de dados e cargas de trabalho do aplicativo
A habilitação do observador de banco de dados provavelmente não terá um impacto observável nas cargas 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 observador de banco de dados no Banco de Dados SQL do Azure são regidas 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 as cargas de trabalho do aplicativo em vez das consultas de monitoramento.
Para evitar conflitos de simultaneidade, como bloqueios e deadlocks entre cargas de trabalho de coleção de dados e de banco de dados em execução em seus recursos de SQL do Azure, as consultas de monitoramento usam tempos limite de bloqueio e prioridade de deadlock baixos. Se houver um conflito de simultaneidade, será dada prioridade às consultas de carga de trabalho do aplicativo. Dependendo dos padrões de carga de trabalho do aplicativo, isso pode causar lacunas ocasionais nos dados coletados para alguns conjuntos de dados.
Coleção 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. O observador de banco de dados se conecta ao banco de dados âncora. Como o observador detém a permissão VIEW SERVER PERFORMANCE STATE
, as exibições do sistema no banco de dados âncora fornecem dados de monitoramento para o pool como um todo.
Dica
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. Por exemplo, isso inclui a utilização de recursos e métricas de taxa de solicitação para cada banco de dados. Para alguns cenários, o monitoramento de um pool elástico como um todo torna desnecessário monitorar cada banco de dados individual no pool.
Determinados dados de monitoramento, como CPU no nível do pool, utilização de memória e 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, outros dados, como estatísticas de runtime de consulta, propriedades de banco de dados, metadados de tabela e índice, estão disponíveis somente no nível do banco de dados.
Caso adicione bancos de dados individuais de um pool elástico como destinos do observador de banco de dados, você também deverá adicionar o pool elástico como destino. Dessa forma, você obtém uma visão mais completa do desempenho do banco de dados e do pool.
Monitorar pools elásticos densos
Um pool elástico denso contém uma grande quantidade 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 no mínimo, supondo que apenas um pequeno número de bancos de dados no pool esteja ativo ao mesmo tempo.
Os recursos de computação disponíveis para consultas do observador de banco de dados em um pool elástico denso são ainda mais limitados para evitar afetar as consultas de aplicativos. Devido a isso, o observador de banco de dados talvez não possa coletar dados de monitoramento de todos os bancos de dados em um pool elástico denso.
Dica
Para monitorar um pool elástico denso, habilite o monitoramento no nível do pool adicionando o pool elástico como destino.
Não é recomendável monitorar mais do que alguns poucos bancos de dados individuais em um pool elástico denso. Você pode ver lacunas nos dados coletados ou intervalos maiores do que o esperado entre amostras de dados devido a recursos de computação insuficientes disponíveis para consultas do observador de banco de dados.
Residência de dados
Os clientes podem optar por armazenar dados de monitoramento do 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 observador.
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 saber mais sobre capacidades de replicação de dados no Azure Data Explorer, consulte Visão geral da continuidade dos 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 a replicação de dados para uma região ou geografia diferente.
Um banco de dados na Análise em Tempo Real no Microsoft Fabric.
Os clientes não podem escolher a localização geográfica do banco de dados.
Para controlar totalmente a residência de dados para dados de monitoramento do SQL coletados, os clientes devem escolher um banco de dados em um cluster do Azure Data Explorer como o armazenamento de dados.
Os clientes também podem alinhar a geografia e a região do cluster do Azure Data Explorer com a geografia e a região dos recursos do SQL do Azure que estão sendo monitorados. Quando os recursos do 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 atender aos requisitos de residência de dados.
Conjunto de dados
Esta seção descreve os conjuntos de dados disponíveis para cada tipo de destino, incluindo frequências de coleta e nomes de tabela no armazenamento de dados.
Observação
Na preview, 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 coleta (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. |
Alterar o processamento | sqldb_database_change_processing |
00:01:00 |
Cada linha representa um instantâneo das estatísticas de verificação de logs agregados para um recurso de processamento de alterações, como Captura de Dados de Alterações ou Feed de Alterações (Link do Azure Synapse). |
Erros de processamento de alterações | 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ções ou Feed de Alterações (Link do Azure Synapse). |
Conectividade | sqldb_database_connectivity |
00:00:30 |
Cada linha representa um teste de conectividade (um logon e uma consulta) para um banco de dados. |
Réplicas geográficas | 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 de índice | sqldb_database_index_metadata |
00:30:00 |
Cada linha representa uma partição do índice e inclui as propriedades, as estatísticas operacionais e a definição de índice. |
Utilização da memória | sqldb_database_memory_utilization |
00:00:10 |
Cada linha representa um administrador de memória e inclui o consumo de memória pelo administrador na instância do mecanismo de banco de dados. |
Índices ausentes | sqldb_database_missing_indexes |
00:15:00 |
Cada linha representa um índice que pode melhorar o desempenho da consulta, se criado. |
Eventos de memória insuficiente | sqldb_database_oom_events |
00:01:00 |
Cada linha representa um evento de memória insuficiente 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. Esse 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 o monitoramento detalhado e a 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 runtime de consultas | sqldb_database_query_runtime_stats |
00:15:00 |
Cada linha representa um intervalo de runtime do Repositório de Consultas e inclui estatísticas de execução de consultas. |
Estatísticas de espera da consulta | sqldb_database_query_wait_stats |
00:15:00 |
Cada linha representa um intervalo de runtime do Repositório de Consultas e inclui estatísticas de categorias de espera. |
Réplicas | sqldb_database_replicas |
00:00:10 |
Cada linha representa uma réplica de banco de dados, incluindo metadados e estatísticas de replicação. Inclui a réplica primária e réplicas geográficas quando coletadas no primário, e réplicas secundárias quando coletadas no secundário. |
Utilização de recursos | sqldb_database_resource_utilization |
00:00:15 |
Cada linha representa CPU, E/S de dados, E/S de logs e outras estatísticas de consumo de recursos para um banco de dados em um 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 de um banco de dados, agregado por atributos de sessão não aditivos, como nome de logon, nome do host, nome do aplicativo etc. |
Agendadores de SOS | sqldb_database_sos_schedulers |
00:01:00 |
Cada linha representa um agendador de SOS e inclui estatísticas para o agendador, o nó da CPU e o nó de memória. |
ES de armazenamento | sqldb_database_storage_io |
00:00:10 |
Cada linha representa um arquivo de banco de dados e inclui IOPS cumulativas, produtividade e estatísticas de latência para o arquivo. |
Utilização do armazenamento | sqldb_database_storage_utilization |
00:01:00 |
Cada linha representa um banco de dados e inclui seu uso de armazenamento, incluindo tempdb , Repositório de Consultas e Repositório de Versão Persistente. |
Metadados da tabela | 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. |
Estatísticas de espera | sqldb_database_wait_stats |
00:00:10 |
Cada linha representa um tipo de espera e inclui estatísticas de espera cumulativas da instância do mecanismo de banco de dados. Para bancos de dados em um pool elástico, somente 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 de pool não são coletados. Isso inclui os conjuntos de dados de Utilização de memória, Eventos de memória insuficiente, Contadores de desempenho (comuns) e Contadores de desempenho (detalhados). O conjunto de dados de estatísticas de espera é coletado, mas contém apenas esperas com escopo de banco de dados. Isso evita a coleta dos mesmos dados de todos os bancos de dados no pool.
Os dados no nível de pool são coletados nos conjuntos de dados do pool elástico de SQL. Para um determinado pool elástico, os conjuntos de dados de 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 logs, Solicitações, Transações etc.
Colunas comuns
Para cada tipo de destino, os conjuntos de dados têm colunas comuns, conforme descrito nas tabelas a seguir.
Nome da coluna | Descrição |
---|---|
subscription_id |
A ID da assinatura do Azure do banco de dados SQL. |
resource_group_name |
O nome do grupo de recursos para o banco de dados SQL. |
resource_id |
A ID do recurso do Azure do banco de dados SQL. |
sample_time_utc |
O tempo em que os valores na linha foram observados, em UTC. |
collection_time_utc |
A hora em que a linha foi coletada pelo observador, em UTC. Esta coluna está presente em conjuntos de dados em que o tempo de coleta pode ser diferente do tempo de amostra. |
replica_type |
Um deles: Primário, Secundário de HA, Encaminhador de replicação geográfica, Secundário nomeado. |
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 o pool elástico. |
database_name |
O nome do banco de dados monitorado. |
database_id |
A ID do banco de dados do banco de dados monitorado, exclusivo no servidor lógico. |
logical_database_id |
Um identificador de banco de dados exclusivo que permanece inalterado durante a vida útil do banco de dados de 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 de usuário. A alteração do 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 de hiperescala. |
Um conjunto de dados terá as colunas sample_time_utc
e collection_time_utc
se contiver amostras observadas antes de a linha ser coletada pelo observador de banco de dados. Caso contrário, o tempo de observação e o tempo de coleta serão os mesmos, e o conjunto de dados conterá apenas a coluna sample_time_utc
.
Por exemplo, o conjunto de dados sqldb_database_resource_utilization
é derivado da exibição de gerenciamento dinâmico (DMV) sys.dm_db_resource_stats. A DMV contém a coluna end_time
, que é o tempo de observação de cada linha que relata estatísticas de recursos agregados para um intervalo de 15 segundos. Esse tempo é relatado na coluna sample_time_utc
. Quando o observador de banco de dados consulta essa DMV, o conjunto de resultados pode conter várias linhas, cada uma com um end_time
diferente. Todas essas linhas têm o mesmo valor de collection_time_utc
.
Conteúdo relacionado
- Monitorar cargas de trabalho de SQL do Azure com o observador de banco de dados (preview)
- Início Rápido: criar um observador de banco de dados para monitorar o SQL do Azure (preview)
- Criar e configurar um observador de banco de dados (preview)
- Analisar dados de monitoramento do observador de banco de dados (preview)
- Perguntas frequentes sobre o observador de banco de dados