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 un utente è proprietario o a cui l'utente ha concesso alcune 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)