Condividi tramite


sys.dm_hs_database_log_rate (Transact-SQL)

si applica a:database SQL di Azure

Ogni riga del set di risultati restituisce 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 contribuire alla riduzione della frequenza di generazione dei log.

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.

Nota

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

Sintassi

sys.dm_hs_database_log_rate ( 
{ database_id | NULL }                                     
)                             

Argomenti

database_id

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

Specificato database_id: restituisce una riga per il database specifico.

NULL: per un database singolo, 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 Descrizione
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 colonna replica_id in sys.dm_database_replica_states. NULL quando component_id corrisponde a un server di pagine Hyperscale.

Questo valore viene restituito dalla chiamata di funzione DATABASEPROPERTYEX(DB_NAME(), 'ReplicaID') quando si è connessi alla replica.
file_id int NULL 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 è server di pagine; in caso contrario, restituisce NULL. Questo valore corrisponde alla colonna file_id 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 di pagina
Primary = Replica di calcolo primaria
Replica = Replica di calcolo secondaria, ad esempio una replica a disponibilità elevata o una replica denominata.
LocalDestage = Servizio di 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

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.

Autorizzazioni

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

Esempi

Un. 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);