sys. dm_db_column_store_row_group_physical_stats (Transact-SQL)sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

GILT FÜR: JaSQL Server 2016 und höher JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data WarehouseAPPLIES TO: YesSQL Server 2016 and later YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Stellt aktuelle Informationen zu allen columnstore--Indizes in der aktuellen Datenbank auf Zeilen Gruppenebene bereit.Provides current rowgroup-level information about all of the columnstore indexes in the current database.

Dadurch wird die Katalog Sicht sys. column_store_row_groups (Transact-SQL-)erweitert.This extends the catalog view sys.column_store_row_groups (Transact-SQL).

SpaltennameColumn name DatentypData type BESCHREIBUNGDescription
object_idobject_id intint ID der zugrunde liegenden Tabelle.ID of the underlying table.
index_idindex_id intint ID dieses columnstore--Indexes für object_id Tabelle.ID of this columnstore index on object_id table.
partition_numberpartition_number intint ID der Tabellen Partition, die row_group_identhält.ID of the table partition that holds row_group_id. Sie können partition_number verwenden, um diese DMV mit sys.partitions zu verknüpfen.You can use partition_number to join this DMV to sys.partitions.
row_group_idrow_group_id intint ID dieser Zeilen Gruppe.ID of this row group. Bei partitionierten Tabellen ist value innerhalb der Partition eindeutig.For partitioned tables, value is unique within the partition.

-1 für einen in-Memory-Tail.-1 for an in-memory tail.
delta_store_hobt_iddelta_store_hobt_id bigintbigint Der hobt_id für eine Zeilen Gruppe im Delta Speicher.The hobt_id for a row group in the delta store.

NULL, wenn die Zeilen Gruppe nicht im Delta Speicher gespeichert ist.NULL if row group is not in the delta store.

NULL für das Ende einer in-Memory-Tabelle.NULL for tail of an in-memory table.
statestate tinyinttinyint Die state_descriptionzugeordnete ID-Nummer.ID number associated state_description.

0 = INVISIBLE0 = INVISIBLE

1 = OPEN1 = OPEN

2 = CLOSED2 = CLOSED

3 = COMPRESSED3 = COMPRESSED

4 = Tombstone4 = TOMBSTONE

Die Komprimierung ist der einzige Status, der für Tabellen im Arbeitsspeicher gilt.COMPRESSED is the only state that applies to in-memory tables.
state_descstate_desc nvarchar(60)nvarchar(60) Beschreibung des Zeilen Gruppenstatus:Description of the row group state:

Unsichtbar: eine Zeilen Gruppe, die erstellt wird.INVISIBLE -A row group that is being built. Beispiel:For example:
Eine Zeilen Gruppe im columnstore-ist unsichtbar, während die Daten komprimiert werden.A row group in the columnstore is INVISIBLE while the data is being compressed. Wenn die Komprimierung abgeschlossen ist, ändert ein metadatenschalter den Status der columnstore--Zeilen Gruppe von unsichtbar in komprimiert und den Status der Delta Store-Zeilen Gruppe von Closed in Tombstone.When the compression is finished a metadata switch changes the state of the columnstore row group from INVISIBLE to COMPRESSED, and the state of the deltastore row group from CLOSED to TOMBSTONE.

Open: eine Delta Store-Zeilen Gruppe, die neue Zeilen akzeptiert.OPEN - A deltastore row group that is accepting new rows. Eine offene Zeilengruppe befindet sich weiterhin im rowstore-Format und wurde nicht in das columnstore-Format komprimiert.An open row group is still in rowstore format and has not been compressed to columnstore format.

Closed: eine Zeilen Gruppe im Delta Speicher, die die maximale Anzahl von Zeilen enthält, und wartet darauf, dass der tupelverschiebungsprozess Sie in den columnstore komprimiert.CLOSED - A row group in the delta store that contains the maximum number of rows, and is waiting for the tuple mover process to compress it into the columnstore.

Komprimiert: eine Zeilen Gruppe, die mit der columnstore--Komprimierung komprimiert und im columnstore-gespeichert wird.COMPRESSED - A row group that is compressed with columnstore compression and stored in the columnstore.

Tombstone: eine Zeilen Gruppe, die sich zuvor im Delta Store befand und nicht mehr verwendet wird.TOMBSTONE - A row group that was formerly in the deltastore and is no longer used.
total_rowstotal_rows bigintbigint Die Anzahl von Zeilen, die in der Zeilengruppe physisch gespeichert sind.Number of rows physical stored in the row group. Für komprimierte Zeilen Gruppen.For compressed row groups. Schließt die Zeilen ein, die als gelöscht markiert sind.Includes the rows that are marked deleted.
deleted_rowsdeleted_rows bigintbigint Die Anzahl von Zeilen, die in einer komprimierten Zeilengruppe physisch gespeichert und zum Löschen markiert sind.Number of rows physically stored in a compressed row group that are marked for deletion.

Für Zeilengruppen im Deltastore lautet der Wert 0.0 for row groups that are in the delta store.
size_in_bytessize_in_bytes bigintbigint Kombinierte Größe (in Bytes) aller Seiten in dieser Zeilen Gruppe.Combined size, in bytes, of all the pages in this row group. Diese Größe enthält nicht die Größe, die zum Speichern von Metadaten oder freigegebenen Wörterbüchern erforderlich ist.This size does not include the size required to store metadata or shared dictionaries.
trim_reasontrim_reason tinyinttinyint Der Grund dafür, dass die komprimierte Zeilen Gruppe die maximale Anzahl von Zeilen überschreitet.Reason that triggered the COMPRESSED row group to have less than the maximum number of rows.

0-UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1-NO_TRIM1 - NO_TRIM

2-Bulkload2 - BULKLOAD

3-erneute Organisation3 - REORG

4-DICTIONARY_SIZE4 - DICTIONARY_SIZE

5-MEMORY_LIMITATION5 - MEMORY_LIMITATION

6-RESIDUAL_ROW_GROUP6 - RESIDUAL_ROW_GROUP

7-STATS_MISMATCH7 - STATS_MISMATCH

8-Überlauf8 - SPILLOVER
trim_reason_desctrim_reason_desc nvarchar(60)nvarchar(60) Beschreibung der trim_reason.Description of trim_reason.

0-UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: ist beim Upgrade von der vorherigen Version von aufgetreten SQL ServerSQL Server .0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Occurred when upgrading from the previous version of SQL ServerSQL Server.

1-NO_TRIM: die Zeilen Gruppe wurde nicht gekürzt.1 - NO_TRIM: The row group was not trimmed. Die Zeilen Gruppe wurde mit dem Maximum von 1.048.476 Zeilen komprimiert.The row group was compressed with the maximum of 1,048,476 rows. Die Anzahl der Zeilen kann kleiner sein, wenn eine Teilmenge der Zeilen nach dem Schließen der Delta-Zeilen Gruppe gelöscht wurde.The number of rows could be less if a subset of rows was deleted after delta rowgroup was closed

2-Bulkload: die Batch Größe für den Massen Ladevorgang beschränkte die Anzahl der Zeilen.2 - BULKLOAD: The bulk-load batch size limited the number of rows.

3-Reorg: erzwungene Komprimierung als Teil des Befehls "Reorg".3 - REORG: Forced compression as part of REORG command.

4-DICTIONARY_SIZE: die Wörterbuch Größe ist zu groß geworden, um alle Zeilen zu komprimieren.4 - DICTIONARY_SIZE: Dictionary size grew too large to compress all of the rows together.

5-MEMORY_LIMITATION: nicht genügend Arbeitsspeicher, um alle Zeilen zu komprimieren.5 - MEMORY_LIMITATION: Not enough available memory to compress all the rows together.

6-RESIDUAL_ROW_GROUP: als Teil der letzten Zeilen Gruppe mit Zeilen < 1 Million während des Index Erstellungs Vorgangs geschlossen6 - RESIDUAL_ROW_GROUP: Closed as part of last row group with rows < 1 million during index build operation

STATS_MISMATCH: nur für columnstore-in der in-Memory-Tabelle.STATS_MISMATCH: Only for columnstore on in-memory table. Wenn die Statistik >= 1 Million qualifizierten Zeilen im Ende falsch angegeben wurde, aber weniger gefunden wurde, weist die komprimierte Zeilen Gruppe < 1 Million Zeilen auf.If stats incorrectly indicated >= 1 million qualified rows in the tail but we found fewer, the compressed rowgroup will have < 1 million rows

Spillover: nur für columnstore-in der in-Memory-Tabelle.SPILLOVER: Only for columnstore on in-memory table. Wenn das Ende > 1 Million qualifizierten Zeilen aufweist, werden die letzten Batch Zeilen komprimiert, wenn die Anzahl zwischen 100 KB und 1 Million liegt.If tail has > 1 million qualified rows, the last batch remaining rows are compressed if the count is between 100k and 1 million
transition_to_compressed_statetransition_to_compressed_state TINYINTtinyint Zeigt, wie diese Zeilen Gruppe aus dem Delta Store in einen komprimierten Zustand im columnstore verschoben wurde.Shows how this rowgroup got moved from the deltastore to a compressed state in the columnstore.

1-NOT_APPLICABLE1- NOT_APPLICABLE

2-INDEX_BUILD2 - INDEX_BUILD

3-TUPLE_MOVER3 - TUPLE_MOVER

4-REORG_NORMAL4 - REORG_NORMAL

5-REORG_FORCED5 - REORG_FORCED

6-Bulkload6 - BULKLOAD

7-zusammenführen7 - MERGE
transition_to_compressed_state_desctransition_to_compressed_state_desc nvarchar(60)nvarchar(60) NOT_APPLICABLE: der Vorgang gilt nicht für den Delta Store.NOT_APPLICABLE - the operation does not apply to the deltastore. Oder die Zeilen Gruppe wurde vor dem Upgrade auf komprimiert SQL Server 2016 (13.x)SQL Server 2016 (13.x) . in diesem Fall wird der Verlauf nicht beibehalten.Or, the rowgroup was compressed prior to upgrading to SQL Server 2016 (13.x)SQL Server 2016 (13.x) in which case the history is not preserved.

INDEX_BUILD: bei der Indexerstellung oder indexneu Erstellung wurde die Zeilen Gruppe komprimiert.INDEX_BUILD - An index create or index rebuild compressed the rowgroup.

TUPLE_MOVER: der tupelverschiebungsvorgang, der im Hintergrund ausgeführt wird, hat die Zeilen Gruppe komprimiert.TUPLE_MOVER - The tuple mover running in the background compressed the rowgroup. Der tupelverschiebungsvorgang erfolgt, nachdem der Status der Zeilen Gruppe von geöffnet in geschlossen geändert wurde.Tuple mover happens after the rowgroup changes state from OPEN to CLOSED.

REORG_NORMAL-der neuorganisations Vorgang, Alter Index... Reorg: die geschlossene Zeilen Gruppe wurde aus dem Delta Store in den columnstore verschoben.REORG_NORMAL - The reorganization operation, ALTER INDEX ... REORG, moved the CLOSED rowgroup from the deltastore to the columnstore. Dieser Fehler ist aufgetreten, bevor die Zeilen Gruppe vom tupelverschiebungsverschiebungs Vorgang verschoben werden konnte.This occurred before the tuple-mover had time to move the rowgroup.

REORG_FORCED: diese Zeilen Gruppe war im Delta Store geöffnet und wurde im columnstore-erzwungen, bevor Sie eine vollständige Anzahl von Zeilen besaß.REORG_FORCED - This rowgroup was open in the deltastore and was forced into the columnstore before it had a full number of rows.

Bulkload: bei einem Massen Ladevorgang wurde die Zeilen Gruppe direkt ohne Verwendung des Delta Stores komprimiert.BULKLOAD - A bulk-load operation compressed the rowgroup directly without using the deltastore.

Merge: ein Mergevorgang hat eine oder mehrere Zeilen Gruppen in diese Zeilen Gruppe konsolidiert und dann die columnstore--Komprimierung ausgeführt.MERGE - A merge operation consolidated one or more rowgroups into this rowgroup and then performed the columnstore compression.
has_vertipaq_optimizationhas_vertipaq_optimization bitbit Vertipq-Optimierung verbessert die columnstore--Komprimierung durch Neuanordnen der Reihenfolge der Zeilen in der Zeilen Gruppe, um eine höhere Komprimierung zu erreichen.VertiPaq optimization improves columnstore compression by rearranging the order of the rows in the rowgroup to achieve higher compression. Diese Optimierung erfolgt in den meisten Fällen automatisch.This optimization occurs automatically in most cases. Es gibt zwei Fälle, in denen vertipq-Optimierung nicht verwendet wird:There are two cases where VertiPaq optimization is not used:
a.a. Wenn eine Delta-Zeilen Gruppe in den columnstore-verschoben wird und mindestens ein nicht gruppierter Index für den columnstore--Index vorhanden ist, wird die vertigtq-Optimierung übersprungen, um die Änderungen am Zuordnungsindex zu minimieren.when a delta rowgroup moves into the columnstore and there are one or more nonclustered indexes on the columnstore index - in this case VertiPaq optimization is skipped to minimizes changes to the mapping index;
b.b. für columnstore--Indizes für Speicher optimierte Tabellen.for columnstore indexes on memory-optimized tables.

0 = Nein0 = No

1 = Ja1 = Yes
Strogeneration BIGINTbigint Die Zeilen Gruppen Generierung, die dieser Zeilen Gruppe zugeordnet ist.Row group generation associated with this row group.
created_timecreated_time datetime2datetime2 Uhrzeit, zu der die Zeilen Gruppe erstellt wurde.Clock time for when this rowgroup was created.

NULL: bei einem columnstore--Index für eine in-Memory-Tabelle.NULL - for a columnstore index on an in-memory table.
 
closed_timeclosed_time datetime2datetime2 Uhrzeit, zu der die Zeilen Gruppe geschlossen wurde.Clock time for when this rowgroup was closed.

NULL: bei einem columnstore--Index für eine in-Memory-Tabelle.NULL - for a columnstore index on an in-memory table.
 
     

ErgebnisseResults

Gibt eine Zeile für jede Zeilen Gruppe in der aktuellen Datenbank zurück.Returns one row for each rowgroup in the current database.

BerechtigungenPermissions

Erfordert CONTROL die-Berechtigung für die-Tabelle und VIEW DATABASE STATE die-Berechtigung für die Datenbank.Requires CONTROL permission on the table and VIEW DATABASE STATE permission on the database.

BeispieleExamples

A.A. Berechnen Sie die Fragmentierung, um zu entscheiden, wann Sie einen columnstore--Index neu organisieren oder neu erstellen.Calculate fragmentation to decide when to reorganize or rebuild a columnstore index.

Bei columnstore--Indizes ist der Prozentsatz gelöschter Zeilen ein gutes Maß für die Fragmentierung in einer Zeilen Gruppe.For columnstore indexes, the percent of deleted rows is a good measure for the fragmentation in a rowgroup. Wenn die Fragmentierung 20% oder mehr beträgt, entfernen Sie die gelöschten Zeilen.When the fragmentation is 20% or more, remove the deleted rows. Weitere Beispiele finden Sie unter Neuorganisieren und Neuerstellen von Indizes.For more examples, see Reorganize and Rebuild Indexes.

In diesem Beispiel wird sys. dm_db_column_store_row_group_physical_stats mit anderen Systemtabellen verbunden, und anschließend wird die Fragmentation Spalte als Schätzung der Effizienz der einzelnen Zeilen Gruppen in der aktuellen Datenbank berechnet.This example joins sys.dm_db_column_store_row_group_physical_stats with other system tables and then calculates the Fragmentation column as an estimate of the efficiency of each row group in the current database. Wenn Sie Informationen zu einer einzelnen Tabelle suchen möchten, entfernen Sie die Kommentar-Bindestriche vor der Where -Klausel, und geben Sie einen Tabellennamen an.To find information on a single table, remove the comment hyphens in front of the WHERE clause and provide a table name.

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;  

Weitere InformationenSee Also

Objektkatalog Sichten (Transact-SQL-) Object Catalog Views (Transact-SQL)
Katalog Sichten (Transact-SQL-) Catalog Views (Transact-SQL)
Columnstore Index Architecture (Columnstore-Indizes: Architektur) Columnstore Index Architecture
Abfragen der SQL Server System Katalog-FAQ Querying the SQL Server System Catalog FAQ
sys. Columns (Transact-SQL-) sys.columns (Transact-SQL)
sys. ALL_COLUMNS (Transact-SQL-) sys.all_columns (Transact-SQL)
sys. computed_columns (Transact-SQL-)sys.computed_columns (Transact-SQL)
sys. column_store_dictionaries (Transact-SQL-) sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)sys.column_store_segments (Transact-SQL)