Condividi tramite


sys.dm_hs_database_log_rate (Transact-SQL)

si applica a:database SQL di Azure

La sys.dm_hs_database_log_rate funzione DMF (Dynamic Management Function) restituisce informazioni sulla frequenza di generazione dei log in Hyperscale del database SQL di Azure.

Ogni riga nel set di risultati rappresenta un componente che controlla (riduce) la frequenza di generazione dei log in un database Hyperscale. Esistono più componenti nell'architettura del livello Hyperscale che potrebbero ridurre la frequenza di generazione dei log per mantenere stabili e bilanciate le prestazioni del database.

Alcuni tipi di componenti, ad esempio repliche di calcolo secondarie o server di pagine, possono ridurre temporaneamente la frequenza di generazione dei log nella replica di calcolo primaria per garantire l'integrità e la stabilità complessive del database.

Se la frequenza di generazione del log non viene ridotta da alcun componente, viene restituita una riga per il componente di replica di calcolo primario, che mostra la frequenza massima di generazione dei log consentita per il database.

Questa funzione a gestione dinamica restituisce righe solo quando la sessione è connessa alla replica primaria.

Sintassi

sys.dm_hs_database_log_rate ( 
{ database_id | NULL }                                     
)                             

Arguments

database_id

database_id è un numero intero che rappresenta l'ID del database, senza alcun valore predefinito. Gli input validi sono un ID di database o NULL.

Quando viene specificato un oggetto database_id , sys.dm_hs_database_log_rate restituisce una riga per il database specifico.

Se non viene specificato o quando NULL viene specificato, per un singolo database restituisce una riga per il database corrente. Per un database in un pool elastico, restituisce righe per tutti i database nel pool in cui il chiamante dispone di autorizzazioni sufficienti.

È possibile specificare la funzione predefinita DB_ID .

Tabella restituita

Nome colonna Tipo di dati Description
database_id Int NOT NULL Identificatore del database. I valori sono univoci all'interno di un singolo database o di un pool elastico, ma non all'interno di un server logico.
replica_id uniqueidentifier NOT NULL Identificatore di una replica di calcolo che corrisponde alla replica_id colonna in sys.dm_database_replica_states. NULL quando component_id corrisponde a un server di pagine Hyperscale.

Questo valore viene restituito dalla chiamata di DATABASEPROPERTYEX(DB_NAME(), 'ReplicaID') funzione quando si è connessi alla replica.
file_id Int NULLO ID del file di database all'interno del database corrispondente al server di pagine che limita la frequenza di generazione del log. Verrà popolato solo se il ruolo è il server di pagine, in caso contrario restituisce NULL. Questo valore corrisponde alla file_id colonna in sys.database_files.
current_max_log_rate bigint NOT NULL Limite massimo di velocità del log corrente per la frequenza di generazione dei log nella replica di calcolo primaria, in byte/sec. Se nessun componente riduce la frequenza di generazione dei log, segnala il limite di velocità di generazione dei log per un database Hyperscale.
component_id uniqueidentifier NOT NULL Identificatore univoco di un componente Hyperscale, ad esempio un server di pagine o una replica di calcolo.
role smallint NOT NULL Tutti i ruoli dei componenti esistenti che possono ridurre la generazione dei log.

Unknown = 0
Storage = 1
Primary = 2
Replica = 4
LocalDestage = 5
Destage = 6
GeoReplica = 10
StorageCheckpoint = 12
MigrationTarget = 14
Quando la frequenza di generazione dei log è limitata, è possibile osservare i tipi di attesa seguenti corrispondenti a ogni ruolo nella replica di calcolo primaria:
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
Per altre informazioni, vedere Attese di limitazione della frequenza dei log
role_desc nvarchar(60) NOT NULL Unknown = Il ruolo componente non è noto
Storage = Server pagina
Primary = Replica di calcolo primaria
Replica = Replica di calcolo secondaria, ad esempio una replica a disponibilità elevata o una replica denominata.
LocalDestage = Servizio log
Destage = Archiviazione log a lungo termine
GeoReplica = Replica geografica secondaria
StorageCheckpoint = Checkpoint in un server di pagine
MigrationTarget = Il database di destinazione durante la migrazione inversa da Hyperscale a un database non Hyperscale.
catchup_rate bigint NOT NULL Frequenza di recupero in byte/sec. Restituisce zero quando la frequenza dei log non viene ridotta.
catchup_bytes bigint NOT NULL Quantità di log delle transazioni, in byte, che un componente deve applicare per recuperare la replica di calcolo primaria. Restituisce 0 quando il componente viene intercettato.
last_reported_time datetime Ora dell'ultima segnalazione dei valori del servizio di log Hyperscale.

Osservazioni:

La sys.dm_hs_database_log_rate funzione di gestione dinamica si applica solo al livello Hyperscale del database SQL di Azure.

Nel livello di servizio Hyperscale del database SQL di Azure, il servizio log garantisce che i componenti distribuiti non si trovino molto indietro nell'applicazione del log delle transazioni. Questo è necessario per mantenere l'integrità e la stabilità complessive del sistema. Quando i componenti sono in ritardo e la frequenza di recupero è inferiore alla frequenza di generazione del log corrente, il servizio log riduce la frequenza di generazione dei log nel database primario. Il sys.dm_hs_database_log_rate() DMF può essere usato per comprendere quale componente sta causando la riduzione della frequenza di log e in quale misura e per quanto tempo la riduzione della frequenza di log potrebbe durare.

Per altre informazioni sulla riduzione della frequenza dei log, vedere Diagnostica delle prestazioni in Hyperscale.

Permissions

Questa funzione di gestione dinamica richiede l'autorizzazione VIEW DATABASE PERFORMANCE STATE .

Esempi

R. Restituire il componente che causa la riduzione della frequenza dei log in un database specifico

Nell'esempio seguente viene restituita una riga per il componente che causa una riduzione della frequenza di log. Se la frequenza di generazione dei log non viene ridotta da alcun componente, verrà restituita una riga per il calcolo primario, che mostra la frequenza massima di generazione dei log consentita per il database.

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. Restituire i componenti che causano la riduzione della frequenza di registrazione

Quando si è connessi a un database in un pool elastico, nell'esempio seguente viene restituita una riga per il componente che causa una riduzione della frequenza di log per ogni database nel pool in cui si dispone di autorizzazioni sufficienti. Quando si è connessi a un database singolo, restituisce la riga per il database.

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