Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
van Azure SQL Database
Azure SQL Managed Instance
Biedt actuele informatie op rijgroepniveau over alle columnstore-indexen in de huidige database.
Met deze DMV wordt de catalogusweergave uitgebreid sys.column_store_row_groups.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
object_id |
int | Id van de onderliggende tabel. |
index_id |
int | Id van deze columnstore-index in object_id tabel. |
partition_number |
int | Id van de tabelpartitie die in bewaring is row_group_id. U kunt partition_number gebruiken om deze DMV toe te voegen aan sys.partitions |
row_group_id |
int | Id van deze rijgroep. Voor gepartitioneerde tabellen is de waarde uniek binnen de partitie.-1 voor een in-memory tail. |
delta_store_hobt_id |
bigint | De hobt_id voor een rijgroep in het Delta-archief.NULL als rijgroep zich niet in het Delta-archief bevindt.NULL voor de staart van een tabel in het geheugen. |
state |
tinyint | Id-nummer gekoppeld state_description.0 = INVISIBLE1= OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONECOMPRESSED is de enige status die van toepassing is op tabellen in het geheugen. |
state_desc |
nvarchar(60) | Beschrijving van de status van de rijgroep:0
-
INVISIBLE - Een rijgroep die wordt gebouwd. Voorbeeld:Een rijgroep in de columnstore is INVISIBLE wanneer de gegevens worden gecomprimeerd. Wanneer de compressie is voltooid, verandert een metagegevenswissel de status van de columnstore-rijgroep in INVISIBLECOMPRESSED en de status van de deltastore-rijgroep van CLOSED naar TOMBSTONE.1
-
OPEN - Een deltastore-rijgroep die nieuwe rijen accepteert. Een geopende rijgroep heeft nog steeds de indeling rowstore en is niet gecomprimeerd naar de columnstore-indeling.2
-
CLOSED - Een rijgroep in het Delta-archief met het maximum aantal rijen en wacht tot het tuple-mover-proces deze in de columnstore comprimeert.3
-
COMPRESSED - Een rijgroep die is gecomprimeerd met columnstore-compressie en is opgeslagen in de columnstore.4
-
TOMBSTONE - Een rijgroep die voorheen in de deltastore was en niet meer wordt gebruikt. |
total_rows |
bigint | Het aantal rijen dat fysiek is opgeslagen in de rijgroep. Voor gecomprimeerde rijgroepen. Bevat de rijen die zijn gemarkeerd als verwijderd. |
deleted_rows |
bigint | Het aantal rijen dat fysiek is opgeslagen in een gecomprimeerde rijgroep die is gemarkeerd voor verwijdering.0 voor rijgroepen die zich in het Delta-archief bevinden.Voor niet-geclusterde columnstore-indexen bevat deze waarde geen verwijderde rijen die zijn opgeslagen in de verwijderbuffer. Zie sys.internal_partitions voor meer informatie en het aantal verwijderde rijen in de verwijderbuffer. |
size_in_bytes |
bigint | Gecombineerde grootte, in bytes, van alle pagina's in deze rijgroep. Deze grootte bevat niet de vereiste grootte voor het opslaan van metagegevens of gedeelde woordenlijsten. |
trim_reason |
tinyint | Reden waarom de COMPRESSED rijgroep minder is dan het maximum aantal rijen.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION1 - NO_TRIM2 - BULKLOAD3 - REORG4 - DICTIONARY_SIZE5 - MEMORY_LIMITATION6 - RESIDUAL_ROW_GROUP7 - STATS_MISMATCH8 - SPILLOVER9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) | Beschrijving van trim_reason.0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Is opgetreden bij het upgraden van de vorige versie van SQL Server.1
-
NO_TRIM: De rijgroep is niet ingekort. De rijgroep is gecomprimeerd met het maximum van 1.048.576 rijen. Het aantal rijen kan minder zijn als een subset rijen is verwijderd nadat de delta-rijgroep is gesloten2
-
BULKLOAD: De batchgrootte bulksgewijs laden beperkt het aantal rijen.3
-
REORG: Geforceerde compressie als onderdeel van REORG de opdracht.4
-
DICTIONARY_SIZE: De woordenlijstgrootte is te groot geworden om alle rijen samen te comprimeren.5
-
MEMORY_LIMITATION: Onvoldoende beschikbaar geheugen om alle rijen samen te comprimeren.6
-
RESIDUAL_ROW_GROUP: Gesloten als onderdeel van de laatste rijgroep met rijen < 1 miljoen tijdens de indexbuildbewerking.Opmerking: Een partitiebuild met meerdere kernen kan resulteren in meer dan één trim van dit type. 7
-
STATS_MISMATCH: Alleen voor columnstore in de tabel in het geheugen. Als de statistieken onjuist zijn aangegeven >= 1 miljoen gekwalificeerde rijen in de staart, maar we minder hebben gevonden, heeft de gecomprimeerde rijgroep < 1 miljoen rijen8
-
SPILLOVER: Alleen voor columnstore in de tabel in het geheugen. Als tail 1 miljoen gekwalificeerde rijen heeft > , worden de laatste batch resterende rijen gecomprimeerd als het aantal tussen 100.000 en 1 miljoen ligt9
-
AUTO_MERGE: Een samenvoegbewerking van Tuple Mover die op de achtergrond wordt uitgevoerd, hebben een of meer rijgroepen samengevoegd in deze rijgroep. |
transition_to_compressed_state |
tinyint | Laat zien hoe deze rijgroep is verplaatst van de deltastore naar een gecomprimeerde status in de columnstore.1 - NOT_APPLICABLE2 - INDEX_BUILD3 - TUPLE_MOVER4 - REORG_NORMAL5 - REORG_FORCED6 - BULKLOAD7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE - de bewerking is niet van toepassing op de deltastore. Of de rijgroep is gecomprimeerd voordat de upgrade naar SQL Server 2016 (13.x) is uitgevoerd. In dat geval blijft de geschiedenis niet behouden.2
-
INDEX_BUILD - Een index maakt of index herbouwde de rijgroep.3
-
TUPLE_MOVER - De tuple-mover die op de achtergrond wordt uitgevoerd, heeft de rijgroep gecomprimeerd. Tuple-mover vindt plaats nadat de rijgroep de status wijzigt van OPEN in CLOSED.4
-
REORG_NORMAL - De reorganisatiebewerking, ALTER INDEX ... REORGverplaatste de CLOSED rijgroep van de deltastore naar de columnstore. Dit gebeurde voordat de tuple-mover tijd had om de rijgroep te verplaatsen.5
-
REORG_FORCED - Deze rijgroep was geopend in de deltastore en werd geforceerd naar de columnstore voordat het een volledig aantal rijen had.6
-
BULKLOAD - Een bewerking voor bulksgewijs laden heeft de rijgroep rechtstreeks gecomprimeerd zonder de deltastore te gebruiken.7
-
MERGE - Een samenvoegbewerking heeft een of meer rijgroepen samengevoegd in deze rijgroep en vervolgens de columnstore-compressie uitgevoerd. |
has_vertipaq_optimization |
bit | VertiPaq-optimalisatie verbetert columnstore-compressie door de volgorde van de rijen in de rijgroep opnieuw te rangschikken om een hogere compressie te bereiken. Deze optimalisatie vindt automatisch plaats in de meeste gevallen. Er zijn twee gevallen waarin VertiPaq-optimalisatie niet wordt gebruikt: a. wanneer een deltarijgroep naar de columnstore wordt verplaatst en er een of meer niet-geclusterde indexen in de columnstore-index staan, wordt vertiPaq-optimalisatie overgeslagen om wijzigingen in de toewijzingsindex te minimaliseren; b. voor columnstore-indexen voor tabellen die zijn geoptimaliseerd voor geheugen. 0 = Nee1 = Ja |
generation |
bigint | Het genereren van rijgroepen die aan deze rijgroep zijn gekoppeld. |
created_time |
datetime2 | Kloktijd voor het moment waarop deze rijgroep is gemaakt.NULL - voor een columnstore-index in een in-memory tabel. |
closed_time |
datetime2 | Kloktijd voor wanneer deze rijgroep werd gesloten.NULL - voor een columnstore-index in een in-memory tabel. |
Results
Retourneert één rij voor elke rijgroep in de huidige database.
Permissions
Vereist CONTROL machtiging voor de tabel en VIEW DATABASE STATE machtiging voor de database.
Machtigingen voor SQL Server 2022 en hoger
Vereist VIEW DATABASE PERFORMANCE STATE machtiging voor de database.
Examples
A. Bereken fragmentatie om te bepalen wanneer een columnstore-index opnieuw moet worden georganiseerd of herbouwd
Voor columnstore-indexen is het percentage verwijderde rijen een goede meting voor de fragmentatie in een rijgroep. Wanneer de fragmentatie 20% of meer is, verwijdert u de verwijderde rijen. Zie Indexonderhoud optimaliseren om de queryprestaties te verbeteren en het resourceverbruik te verminderen voor meer voorbeelden.
Dit voorbeeld wordt samengevoegd sys.dm_db_column_store_row_group_physical_stats met andere systeemtabellen en berekent vervolgens de Fragmentation kolom als een schatting van de efficiëntie van elke rijgroep in de huidige database. Als u informatie over één tabel wilt vinden, verwijdert u de afbreekstreepjes voor de opmerking vóór de WHERE component en geeft u een tabelnaam op.
SELECT i.object_id,
object_name(i.object_id) AS TableName,
i.name AS IndexName,
i.index_id,
i.type_desc,
CSRowGroups.*,
100 * (ISNULL(deleted_rows, 0)) / NULLIF (total_rows, 0) AS 'Fragmentation'
FROM sys.indexes AS i
INNER JOIN sys.dm_db_column_store_row_group_physical_stats AS CSRowGroups
ON i.object_id = CSRowGroups.object_id
AND i.index_id = CSRowGroups.index_id
-- WHERE object_name(i.object_id) = 'table_name'
ORDER BY object_name(i.object_id), i.name, row_group_id;