Delen via


sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

van toepassing op: SQL Server 2016 (13.x) en hoger Azure SQL DatabaseAzure SQL Managed Instance

Biedt actuele informatie op rijgroepniveau over alle columnstore-indexen in de huidige database.

Hiermee wordt de catalogusweergave uitgebreid sys.column_store_row_groups (Transact-SQL).

Kolomnaam Gegevenstype Beschrijving
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 row_group_idbevat. 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.
status tinyint Id-nummer gekoppeld state_description.

0 = ONZICHTBAAR

1 = OPEN

2 = GESLOTEN

3 = GECOMPRIMEERD

4 = TOMBSTONE

GECOMPRIMEERD 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 - ONZICHTBARE -A rijgroep die wordt gebouwd. Bijvoorbeeld:
Een rijgroep in de columnstore is ONZICHTBAAR terwijl de gegevens worden gecomprimeerd. Wanneer de compressie is voltooid, wordt de status van de columnstore-rijgroep gewijzigd van ONZICHTBAAR in GECOMPRIMEERD en wordt de status van de deltastore-rijgroep gewijzigd van GESLOTEN naar TOMBSTONE.

1 - OPEN - Een deltastore-rijgroep die nieuwe rijen accepteert. Een open rijgroep heeft nog steeds de indeling rowstore en is niet gecomprimeerd naar de columnstore-indeling.

2 - GESLOTEN - Een rijgroep in het Delta-archief dat het maximum aantal rijen bevat en wacht tot het tuple-mover-proces het comprimeert in de columnstore.

3 - GECOMPRIMEERD - 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.
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 groep GECOMPRIMEERDE rijen kleiner is dan het maximum aantal rijen.

0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1 - NO_TRIM

2 - BULKSGEWIJS LADEN

3 - REORG

4 - DICTIONARY_SIZE

5 - MEMORY_LIMITATION

6 - RESIDUAL_ROW_GROUP

7 - STATS_MISMATCH

8 - OVERLOOP

9 - 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 gesloten

2 - BULKLOAD: De batchgrootte bulksgewijs laden beperkt het aantal rijen.

3 - REORG: Geforceerde compressie als onderdeel van de OPDRACHT REORG.

4 - DICTIONARY_SIZE: De grootte van de woordenlijst 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 rijen

8 - SPILLOVER: Alleen voor columnstore in de tabel in het geheugen. Als tail > 1 miljoen gekwalificeerde rijen heeft, worden de resterende rijen van de laatste batch gecomprimeerd als het aantal tussen 100 k en 1 miljoen ligt

9 - AUTO_MERGE: Een Bewerking voor samenvoegen 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_APPLICABLE

2 - INDEX_BUILD

3 - TUPLE_MOVER

4 - REORG_NORMAL

5 - REORG_FORCED

6 - BULKLOAD

7 - SAMENVOEGEN
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 van OPEN in CLOSED heeft gewijzigd.

4 - REORG_NORMAL - De reorganisatiebewerking, ALTER INDEX ... REORG, verplaatste de gesloten 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 bulksgewijze laadbewerking heeft de rijgroep rechtstreeks gecomprimeerd zonder de deltastore te gebruiken.

7 - SAMENVOEGEN : een samenvoegbewerking heeft een of meer rijgroepen samengevoegd in deze rijgroep en vervolgens de columnstore-compressie uitgevoerd.
has_vertipaq_optimization beetje 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 = Nee

1 = Ja
generatie 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 tabel in het geheugen.
closed_time datetime2 Kloktijd voor wanneer deze rijgroep werd gesloten.

NULL: voor een columnstore-index in een tabel in het geheugen.

Resultaten

Retourneert één rij voor elke rijgroep in de huidige database.

Machtigingen

Vereist CONTROL machtiging voor de tabel en VIEW DATABASE STATE machtiging voor de database.

Machtigingen voor SQL Server 2022 en hoger

Hiervoor is de machtiging VIEW DATABASE PERFORMANCE STATE vereist voor de database.

Voorbeelden

Eén. Bereken fragmentatie om te bepalen wanneer een columnstore-index opnieuw moet worden georganiseerd of opnieuw moet worden opgebouwd.

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 Indexen opnieuw ordenen en herbouwenvoor meer voorbeelden.

In dit voorbeeld worden sys.dm_db_column_store_row_group_physical_stats samengevoegd met andere systeemtabellen en wordt vervolgens de Fragmentation kolom berekend 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  
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;  

Zie ook

objectcatalogusweergaven (Transact-SQL)
catalogusweergaven (Transact-SQL)
Columnstore-indexarchitectuur
query's uitvoeren op de veelgestelde vragen over sql Server System Catalog
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)