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 = 0Storage = 1Primary = 2Replica = 4LocalDestage = 5Destage = 6 GeoReplica = 10StorageCheckpoint = 12MigrationTarget = 14Quando 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 è notoStorage = Server di paginaPrimary = Replica di calcolo primariaReplica = Replica di calcolo secondaria, ad esempio una replica a disponibilità elevata o una replica denominata.LocalDestage = Servizio di logDestage = Archiviazione log a lungo termineGeoReplica = Replica geografica secondariaStorageCheckpoint = Checkpoint in un server di pagineMigrationTarget = 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);
Contenuto correlato
- sys.dm_database_replica_states (database SQL di Azure)
-
sys.dm_exec_requests (Transact-SQL) - sys.dm_os_wait_stats (Transact-SQL)
- DATABASEPROPERTYEX (Transact-SQL)