Compartilhar via


sys.dm_hs_database_log_rate (Transact-SQL)

Aplica-se a:Banco de Dados SQL do Azure

A sys.dm_hs_database_log_rate DMF (função de gerenciamento dinâmico) retorna informações sobre a taxa de geração de log na Hiperescala do Banco de Dados SQL do Azure.

Cada linha no conjunto de resultados representa um componente que controla (reduz) a taxa de geração de log em um banco de dados de Hiperescala. Há vários componentes na arquitetura da camada de Hiperescala que podem reduzir a taxa de geração de logs para manter o desempenho do banco de dados estável e equilibrado.

Determinados tipos de componentes, como réplicas de computação secundárias ou servidores de página, podem reduzir temporariamente a taxa de geração de log na réplica de computação primária para garantir a integridade e a estabilidade gerais do banco de dados.

Se a taxa de geração de log não for reduzida por nenhum componente, uma linha será retornada para o componente de réplica de computação primária, mostrando a taxa de geração de log máxima permitida para o banco de dados.

Essa função de gerenciamento dinâmico retorna linhas somente quando a sessão está conectada à réplica primária.

Sintaxe

sys.dm_hs_database_log_rate ( 
{ database_id | NULL }                                     
)                             

Arguments

database_id

database_id é um inteiro que representa a ID do banco de dados, sem valor padrão. As entradas válidas são uma ID de banco de dados ou NULL.

Quando um database_id for fornecido, sys.dm_hs_database_log_rate retornará uma linha para esse banco de dados específico.

Quando não for fornecido ou quando NULL for fornecido, para um banco de dados individual, retornará uma linha para o banco de dados atual. Para um banco de dados em um pool elástico, retorna linhas para todos os bancos de dados no pool em que o chamador tem permissões suficientes.

A função interna DB_ID pode ser especificada.

Tabela Retornada

Nome da coluna Tipo de dados Description
database_id int NÃO NULL Identificador do banco de dados. Os valores são exclusivos em um único banco de dados ou em um pool elástico, mas não dentro de um servidor lógico.
replica_id uniqueidentifier NÃO NULL Identificador de uma réplica de computação que corresponde à replica_id coluna em sys.dm_database_replica_states. NULL quando component_id corresponde a um servidor de página de Hiperescala.

Esse valor é retornado pela chamada de DATABASEPROPERTYEX(DB_NAME(), 'ReplicaID') função quando conectado à réplica.
file_id int ZERO ID do arquivo de banco de dados no banco de dados que corresponde ao servidor de página limitando a taxa de geração de log. Será populado somente se a função for servidor de página, caso contrário, retornará NULL. Esse valor corresponde à file_id coluna em sys.database_files.
current_max_log_rate bigint NÃO NULL O limite de taxa de log máximo atual para a taxa de geração de log na réplica de computação primária, em bytes/s. Se nenhum componente estiver reduzindo a taxa de geração de log, relatará o limite de taxa de geração de log para um banco de dados de Hiperescala.
component_id uniqueidentifier NÃO NULL Um identificador exclusivo de um componente da Hiperescala, como um servidor de página ou uma réplica de computação.
role smallint NÃO NULL Todas as funções de componente existentes que podem reduzir a geração de log.

Unknown = 0
Storage = 1
Primary = 2
Replica = 4
LocalDestage = 5
Destage = 6
GeoReplica = 10
StorageCheckpoint = 12
MigrationTarget = 14
Quando a taxa de geração de log é limitada, os seguintes tipos de espera correspondentes a cada função podem ser observados na réplica de computação primária:
1 - RBIO_RG_STORAGE
4 – RBIO_RG_REPLICA
5 – RBIO_RG_LOCALDESTAGE
6 – RBIO_RG_DESTAGE
10 – RBIO_RG_GEOREPLICA
12 – RBIO_RG_STORAGE_CHECKPOINT
14 – RBIO_RG_MIGRATION_TARGET
Para obter mais informações, consulte As esperas de limitação da taxa de log
role_desc nvarchar(60) NÃO NULL Unknown = A função de componente não é conhecida
Storage = Servidores de página(s)
Primary = Réplica de computação primária
Replica = Réplica de computação secundária, como uma réplica de alta disponibilidade (HA) ou uma réplica nomeada.
LocalDestage = Serviço de log
Destage = Armazenamento de log de longo prazo
GeoReplica = Réplica geo-secundária
StorageCheckpoint = Um ponto de verificação em um servidor de página
MigrationTarget = O banco de dados de destino durante a migração reversa da Hiperescala para um banco de dados não hiperescala.
catchup_rate bigint NÃO NULL Taxa de captura em bytes/s. Retorna zero quando a taxa de log não é reduzida.
catchup_bytes bigint NÃO NULL A quantidade de log de transações, em bytes, que um componente deve aplicar para acompanhar a réplica de computação primária. Retorna 0 quando o componente é capturado.
last_reported_time datetime A última vez que o serviço de log de hiperescala relatou valores.

Observações

A sys.dm_hs_database_log_rate função de gerenciamento dinâmico aplica-se apenas à camada de Hiperescala do Banco de Dados SQL do Azure.

Na camada de serviço hiperescala do Banco de Dados SQL do Azure, o serviço de log garante que os componentes distribuídos não ficam muito atrasados na aplicação do log de transações. Isso é necessário para manter a integridade e a estabilidade gerais do sistema. Quando os componentes estão atrasados e sua taxa de recuperação é menor que a taxa de geração de log atual, o serviço de log reduz a taxa de geração de log no primário. O sys.dm_hs_database_log_rate() DMF pode ser usado para entender qual componente está causando a redução na taxa de log e até que ponto, e por quanto tempo a redução da taxa de log pode durar.

Para obter mais contexto sobre a redução da taxa de log, consulte o diagnóstico de desempenho na Hiperescala.

Permissions

Essa função de gerenciamento dinâmico requer a permissão VIEW DATABASE PERFORMANCE STATE .

Exemplos

a. Retornar o componente que causa a redução da taxa de log em um banco de dados específico

O exemplo a seguir retorna uma linha para o componente que causa a redução da taxa de log. Se a taxa de geração de log não for reduzida por nenhum componente, uma linha será retornada para a computação primária, mostrando a taxa de geração de log máxima permitida para o banco de dados.

SELECT current_max_log_rate_bps, role_desc, catchup_rate_bps, catchup_distance_bytes
FROM sys.dm_hs_database_log_rate(DB_ID(N'Contosodb'));                   

B. Retornar os componentes que causam a redução da taxa de log

Quando conectado a um banco de dados em um pool elástico, o exemplo a seguir retorna uma linha para o componente que causa a redução da taxa de log, para cada banco de dados no pool em que você tem permissões suficientes. Quando conectado a um único banco de dados, retorna a linha do banco de dados.

SELECT current_max_log_rate_bps, role_desc, catchup_rate_bps, catchup_distance_bytes 
FROM sys.dm_hs_database_log_rate(NULL);