Dela via


sys.dm_hs_database_log_rate (Transact-SQL)

gäller för:Azure SQL Database

Funktionen sys.dm_hs_database_log_rate för dynamisk hantering (DMF) returnerar information om logggenereringshastigheten i Azure SQL Database Hyperscale.

Varje rad i resultatuppsättningen representerar en komponent som styr (minskar) logggenereringshastigheten i en Hyperskala-databas. Det finns flera komponenter i arkitekturen på Hyperskala-nivån som kan minska logggenereringshastigheten för att hålla databasens prestanda stabil och balanserad.

Vissa typer av komponenter, till exempel sekundära beräkningsrepliker eller sidservrar, kan tillfälligt minska logggenereringshastigheten på den primära beräkningsrepliken för att säkerställa databasens övergripande hälsa och stabilitet.

Om logggenereringshastigheten inte minskas av någon komponent returneras en rad för den primära beräkningsreplikkomponenten, som visar den högsta tillåtna logggenereringshastigheten för databasen.

Den här dynamiska hanteringsfunktionen returnerar endast rader när sessionen är ansluten till den primära repliken.

Syntax

sys.dm_hs_database_log_rate ( 
{ database_id | NULL }                                     
)                             

Arguments

database_id

database_id är ett heltal som representerar databas-ID:t utan standardvärde. Giltiga indata är antingen ett databas-ID eller NULL.

När en database_id anges sys.dm_hs_database_log_rate returnerar en rad för den specifika databasen.

När det inte anges eller när NULL anges returnerar en rad för den aktuella databasen för en enskild databas. För en databas i en elastisk pool returnerar rader för alla databaser i poolen där anroparen har tillräcklig behörighet.

Den inbyggda funktionen DB_ID kan anges.

Tabell returnerad

Kolumnnamn Datatyp Description
database_id Int INTE NULL Identifierare för databasen. Värdena är unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.
replica_id uniqueidentifier INTE NULL Identifierare för en beräkningsreplik replica_id som motsvarar kolumnen i sys.dm_database_replica_states. NULL när component_id motsvarar en Hyperskala-sidserver.

Det här värdet returneras av funktionsanropet DATABASEPROPERTYEX(DB_NAME(), 'ReplicaID') när det är anslutet till repliken.
file_id Int NOLL ID för databasfilen i databasen som motsvarar den sidserver som begränsar logggenereringshastigheten. Fylls endast i om rollen är sidserver, annars returneras NULL. Det här värdet motsvarar file_id kolumnen i sys.database_files.
current_max_log_rate bigint INTE NULL Den aktuella maximala logghastighetsgränsen för logggenereringshastighet på den primära beräkningsrepliken i byte/s. Om ingen komponent minskar logggenereringshastigheten rapporterar logggenereringshastighetsgränsen för en Hyperskala-databas.
component_id uniqueidentifier INTE NULL En unik identifierare för en Hyperskala-komponent, till exempel en sidserver eller en beräkningsreplik.
role smallint INTE NULL Alla befintliga komponentroller som kan minska logggenereringen.

Unknown = 0
Storage = 1
Primary = 2
Replica = 4
LocalDestage = 5
Destage = 6
GeoReplica = 10
StorageCheckpoint = 12
MigrationTarget = 14
När logggenereringshastigheten är begränsad kan följande väntetyper som motsvarar varje roll observeras på den primära beräkningsrepliken:
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
Mer information finns i Väntetider för logghastighetsbegränsning
role_desc nvarchar(60) INTE NULL Unknown = Komponentrollen är inte känd
Storage = Sidserver(er)
Primary = Primär beräkningsreplik
Replica = Sekundär beräkningsreplik, till exempel en hög tillgänglighetsreplik (HA) eller en namngiven replik.
LocalDestage = Loggtjänst
Destage = Långsiktig logglagring
GeoReplica = Geo-sekundär replik
StorageCheckpoint = En kontrollpunkt på en sidserver
MigrationTarget = Måldatabasen under omvänd migrering från Hyperskala till en databas som inte är hyperskala.
catchup_rate bigint INTE NULL Catchup-hastighet i byte per sekund. Returnerar noll när loggfrekvensen inte minskas.
catchup_bytes bigint INTE NULL Mängden transaktionslogg, i byte, som en komponent måste tillämpa för att komma ikapp den primära beräkningsrepliken. Returnerar 0 när komponenten fångas upp.
last_reported_time datetime Senast Hyperskala-loggtjänsten rapporterade värden.

Anmärkningar

Funktionen sys.dm_hs_database_log_rate för dynamisk hantering gäller endast för Hyperskala-nivån i Azure SQL Database.

På tjänstnivån Hyperskala i Azure SQL Database ser loggtjänsten till att de distribuerade komponenterna inte kommer långt efter när transaktionsloggen tillämpas. Detta krävs för att upprätthålla det övergripande systemets hälsa och stabilitet. När komponenterna ligger efter och deras upphämtningshastighet är lägre än den aktuella logggenereringshastigheten minskar loggtjänsten logggenereringshastigheten för den primära. sys.dm_hs_database_log_rate() DMF kan användas för att förstå vilken komponent som orsakar sänkningen av loggfrekvensen och i vilken utsträckning och hur länge loggfrekvensen kan minskas.

Mer kontext om minskning av loggfrekvens finns i Prestandadiagnostik i Hyperskala.

Permissions

Den här dynamiska hanteringsfunktionen kräver behörigheten VISA DATABASPRESTANDATILLSTÅND .

Examples

A. Returnera komponenten som orsakar logghastighetsminskning i en specifik databas

I följande exempel returneras en rad för komponenten som orsakar minskning av loggfrekvens. Om logggenereringshastigheten inte minskas av någon komponent returneras en rad för den primära beräkningen, som visar den maximala tillåtna logggenereringshastigheten för databasen.

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. Returnera komponenterna som orsakar logghastighetsminskning

När du är ansluten till en databas i en elastisk pool returnerar följande exempel en rad för komponenten som orsakar minskning av loggfrekvensen för varje databas i poolen där du har tillräcklig behörighet. När du är ansluten till en enskild databas returnerar raden för databasen.

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