sys.column_store_row_groups (Transact-SQL)
Gilt für: SQL Server 2012 (11.x) und höher Azure SQL verwaltete Instanz
Stellt Informationen zu gruppierten Columnstore-Indizes auf Segmentbasis bereit, um den Administrator bei Fragen zur Systemverwaltung zu unterstützen. sys.column_store_row_groups enthält eine Spalte für die Gesamtzahl der physisch gespeicherten Zeilen (einschließlich der als gelöscht markierten Zeilen) und eine Spalte für die Anzahl der als gelöscht markierten Zeilen. Verwenden Sie sys.column_store_row_groups , um zu bestimmen, welche Zeilengruppen einen hohen Prozentsatz von gelöschten Zeilen aufweisen und neu erstellt werden sollten.
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
object_id | int | Die ID der Tabelle, in der dieser Index definiert ist. |
index_id | int | ID des Indexes, der diesen columnstore-Index enthält. |
partition_number | int | ID der Tabellenpartition, die die row_group_id der Zeilengruppe enthält. Sie können partition_number verwenden, um diese DMV mit sys.partitions zu verknüpfen. |
row_group_id | int | Die dieser Zeilengruppe zugeordnete Zeilengruppenzahl. Diese ist innerhalb der Partition eindeutig. -1 = tail of an in-memory table. |
delta_store_hobt_id | bigint | Die hobt_id für die OPEN-Zeilengruppe im Delta-Speicher. NULL, wenn sich die Zeilengruppe nicht im Deltaspeicher befindet. NULL für den Tail einer Speichertabelle. |
state | tinyint | Die der state_description zugeordnete ID. 0 = INVISIBLE 1 = OPEN 2 = CLOSED 3 = KOMPRIMIERT 4 = TOMBSTONE |
state_description | nvarchar(60) | Beschreibung des persistenten Status der Zeilengruppe: INVISIBLE -Ein ausgeblendetes komprimiertes Segment beim Erstellen aus Daten in einem Deltaspeicher. Lesevorgänge nutzen den Deltastore, bis das unsichtbare komprimierte Segment abgeschlossen ist. Anschließend werden das neue Segment sichtbar gemacht und der Quelldeltastore entfernt. OPEN – Eine Zeilengruppe mit Lese-/Schreibzugriff, die neue Datensätze akzeptiert. Eine offene Zeilengruppe befindet sich weiterhin im rowstore-Format und wurde nicht in das columnstore-Format komprimiert. CLOSED – Eine Zeilengruppe, die ausgefüllt, aber noch nicht vom Tupel-Moverprozess komprimiert wurde. COMPRESSED - Eine Zeilengruppe, die gefüllt und komprimiert wurde. |
total_rows | bigint | Gesamtzahl der Zeilen, die in der Zeilengruppe physisch gespeichert sind. Einige wurden u. U. gelöscht, sind aber weiterhin gespeichert. Die maximale Anzahl der Zeilen in einer Zeilengruppe beträgt 1.048.576 (hexadezimal FFFFF). |
deleted_rows | bigint | Gesamtzahl der Zeilen in der Zeilengruppe, die als gelöscht markiert sind. Dies ist für DELTA-Zeilengruppen immer 0. |
size_in_bytes | bigint | Größe aller Daten (in Bytes) in dieser Zeilengruppe (ausgenommen von Metadaten oder freigegebenen Wörterbüchern) sowohl für DELTA- als auch für COLUMNSTORE-Zeilengruppen. |
Hinweise
Gibt eine Zeile für jede columnstore-Zeilengruppe für jede Tabelle zurück, die über einen gruppierten oder nicht gruppierten columnstore-Index verfügt.
Verwenden Sie sys.column_store_row_groups , um die Anzahl der Zeilen in der Zeilengruppe und die Größe der Zeilengruppe zu bestimmen.
Wenn die Anzahl der gelöschten Zeilen in einer Zeilengruppe auf einen hohen Prozentsatz der Gesamtzeilen ansteigt, wird die Tabelle weniger effizient. Erstellen Sie den columnstore-Index neu, um die Tabellengröße zu verringern und die Datenträger-E/A zu reduzieren, die zum Lesen der Tabelle erforderlich ist. Um den Columnstore-Index neu zu erstellen, verwenden Sie die OPTION "REBUILD " der ALTER INDEX-Anweisung .
Der aktualisierbare Columnstore fügt zunächst neue Daten in eine OPEN-Zeilengruppe ein, die sich im Rowstore-Format befindet und manchmal auch als Delta-Tabelle bezeichnet wird. Sobald eine geöffnete Zeilengruppe voll ist, ändert sich der Status in CLOSED. Eine geschlossene Zeilengruppe wird durch den Tupel-Mover in das Spaltenspeicherformat komprimiert, und der Zustand wird in COMPRESSED geändert. Die Tupelverschiebungsfunktion ist ein Hintergrundprozess, der regelmäßig aktiv wird und überprüft, ob geschlossene Zeilengruppen vorhanden sind, die in eine columnstore-Zeilengruppe komprimiert werden können. Die Tupelverschiebungsfunktion gibt außerdem alle Zeilengruppen frei, in denen alle Zeilen gelöscht wurden. Deallocated rowgroups are marked as TOMBSTONE. Verwenden Sie die REORGANIZE-Option der ALTER INDEX-Anweisung , um den Tupel-Mover sofort auszuführen.
Wenn eine columnstore-Zeilengruppe aufgefüllt wurde, wird sie komprimiert und akzeptiert keine neuen Zeilen mehr. Wenn aus einer komprimierten Gruppe Zeilen gelöscht werden, verbleiben sie zwar, werden aber als gelöscht gekennzeichnet. Updates einer komprimierten Gruppe werden als Löschvorgang für die komprimierte Gruppe und als Einfügevorgang für eine offene Gruppe implementiert.
Berechtigungen
Gibt Informationen für eine Tabelle zurück, wenn der Benutzer über die Berechtigung für die Tabelle verfügt VIEW DEFINITION
.
Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.
Beispiele
Im folgenden Beispiel werden die sys.column_store_row_groups Tabelle mit anderen Systemtabellen verknüpft, um Informationen zu bestimmten Tabellen zurückzugeben. Die berechnete PercentFull
-Spalte ist eine Schätzung der Effizienz der Zeilengruppe. Wenn Sie Informationen zu einer einzelnen Tabelle suchen möchten, entfernen Sie die Kommentarbindestriche vor der WHERE-Klausel , und geben Sie einen Tabellennamen an.
SELECT i.object_id, object_name(i.object_id) AS TableName,
i.name AS IndexName, i.index_id, i.type_desc,
CSRowGroups.*,
100*(total_rows - ISNULL(deleted_rows,0))/total_rows AS PercentFull
FROM sys.indexes AS i
JOIN sys.column_store_row_groups 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;
Siehe auch
Katalogsichten für Objekte (Transact-SQL)
Katalogsichten (Transact-SQL)
FAQ: Abfragen des SQL Server-Systemkatalogs
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
Beschreibung von Columnstore-Indizes
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)