sys.column_store_row_groups (Transact-SQL)
Si applica a: SQL Server 2012 (11.x) e versioni successive Istanza gestita di SQL di Azure
Fornisce informazioni sull'indice columnstore cluster in base a ogni segmento che aiutano l'amministratore a prendere decisioni in termini di gestione del sistema. sys.column_store_row_groups include una colonna per il numero totale di righe archiviate fisicamente (incluse quelle contrassegnate come eliminate) e una colonna per il numero di righe contrassegnate come eliminate. Utilizzare sys.column_store_row_groups per determinare quali gruppi di righe hanno una percentuale elevata di righe eliminate e devono essere ricompilati.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
object_id | int | ID della tabella in cui è definito l'indice. |
index_id | int | ID dell'indice per la tabella che contiene questo indice columnstore. |
partition_number | int | ID della partizione della tabella che contiene il row_group_id del gruppo di righe. È possibile utilizzare il partition_number per creare un join di questa DMV a sys.partitions. |
row_group_id | int | Numero del gruppo di righe associato a questo gruppo di righe. Univoco all'interno della partizione. -1 = coda di una tabella in memoria. |
delta_store_hobt_id | bigint | Il hobt_id per il gruppo di righe OPEN nell'archivio differenziale. NULL se il gruppo di righe non si trova nell'archivio differenziale. NULL per la parte finale di una tabella in memoria. |
state | tinyint | Numero ID associato a state_description. 0 = INVISIBLE 1 = OPEN 2 = CLOSED 3 = COMPRESSO 4 = TOMBSTONE |
state_description | nvarchar(60) | Descrizione dello stato persistente del gruppo di righe: INVISIBLE : segmento compresso nascosto durante il processo di compilazione da dati in un archivio differenziale. Nelle azioni di lettura verrà utilizzato l'archivio delta fino al completamento del segmento compresso invisibile. Successivamente, il nuovo segmento diventa visibile e l'archivio delta di origine viene rimosso. OPEN: gruppo di righe di lettura/scrittura che accetta nuovi record. Un gruppo di righe aperto presenta ancora il formato rowstore e non è stato compresso nel formato columnstore. CLOSED: gruppo di righe riempito, ma non ancora compresso dal processo di spostamento delle tuple. COMPRESSED: gruppo di righe con riempimento e compressione. |
total_rows | bigint | Righe totali archiviate fisicamente nel gruppo di righe. È possibile che alcune siano state eliminate, ma risultano comunque archiviate. Il numero massimo di righe in un gruppo di righe è 1.048.576 (esadecimale FFFFF). |
deleted_rows | bigint | Righe totali nel gruppo di righe contrassegnate come eliminate. Sempre 0 per i gruppi di righe DELTA. |
size_in_bytes | bigint | Dimensioni in byte di tutti i dati nel gruppo di righe, esclusi i metadati o i dizionari condivisi, per i gruppi di righe DELTA e COLUMNSTORE. |
Osservazioni:
Restituisce una riga per ogni gruppo di righe columnstore per ogni tabella che dispone di un indice columnstore cluster o non cluster.
Utilizzare sys.column_store_row_groups per determinare il numero di righe incluse nel gruppo di righe e le dimensioni del gruppo di righe.
Quando il numero delle righe eliminate in un gruppo di righe diventa una percentuale elevata delle righe totali, la tabella diventa meno efficiente. Ricompilare l'indice columnstore per ridurre le dimensioni della tabella, riducendo le operazioni di I/O del disco necessarie per leggere la tabella. Per ricompilare l'indice columnstore, utilizzare l'opzione REBUILD dell'istruzione ALTER INDEX .
Il columnstore aggiornabile inserisce innanzitutto nuovi dati in un rowgroup OPEN , che è in formato rowstore, ed è anche detto anche tabella differenziale. Quando un rowgroup aperto è pieno, il relativo stato diventa CLOSED. Un rowgroup chiuso viene compresso in formato columnstore dal mover della tupla e lo stato cambia in COMPRESSED. Il processo tuple-mover è un processo in background che si riattiva periodicamente per verificare se esistano gruppi di righe chiusi pronti per essere compressi in un gruppo di righe columnstore. Il processo tuple-mover dealloca i gruppi di righe in cui sono state eliminate tutte le righe. I rowgroup deallocati vengono contrassegnati come TOMBSTONE. Per eseguire immediatamente lo spostamento delle tuple, usare l'opzione REORGANIZE dell'istruzione ALTER INDEX .
Quando un gruppo di righe columnstore risulta riempito, viene compresso e non accetta più nuove righe. Quando vengono eliminate righe da un gruppo compresso, vengono contrassegnate come eliminate, ma risultano ancora presenti. Gli aggiornamenti a un gruppo compresso vengono implementati come un'eliminazione dal gruppo compresso e come un inserimento in un gruppo aperto.
Autorizzazioni
Restituisce informazioni per una tabella se l'utente dispone VIEW DEFINITION
dell'autorizzazione per la tabella.
La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui l'utente è proprietario o per le quali dispone di autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.
Esempi
Nell'esempio seguente la tabella sys.column_store_row_groups viene aggiunta ad altre tabelle di sistema per restituire informazioni su tabelle specifiche. La colonna PercentFull
calcolata è una stima dell'efficienza del gruppo di righe. Per trovare informazioni su una singola tabella, rimuovere i trattini di commento davanti alla clausola WHERE e specificare un nome di tabella.
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;
Vedi anche
Viste del catalogo oggetti (Transact-SQL)
Viste del catalogo (Transact-SQL)
Domande frequenti sull'esecuzione di query nel catalogo di sistema di SQL Server
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
Guida agli indici columnstore
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)