sys.column_store_row_groups (Transact-SQL)
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 ha 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 i gruppi di righe che includono una percentuale elevata di righe eliminate e che devono essere ricompilati.
Si applica a: SQL Server (da SQL Server 2014 a versione corrente). |
Nome della 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. |
delta_store_hobt_id |
bigint |
Hobt_id per i gruppi di righe delta o NULL se il tipo del gruppo di righe non è delta. Un gruppo di righe delta è un gruppo di righe di lettura/scrittura che accetta nuovi record. Un gruppo di righe delta presenta lo stato OPEN. Un gruppo di righe delta presenta ancora il formato rowstore e non è stato compresso nel formato columnstore. |
state |
tinyint |
Numero ID associato a state_description. 0 = INVISIBLE 1 = OPEN 2 = CLOSED 3 = COMPRESSED |
state_desccription |
nvarchar(60) |
Descrizione dello stato persistente del gruppo di righe: INVISIBLE: segmento compresso nascosto in corso di compilazione da dati in un archivio delta. 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: un 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: un gruppo di righe riempito, ma non ancora compresso dal processo tuple-mover. COMPRESSED: un gruppo di righe riempito e compresso. |
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.
L'indice columnstore aggiornabile inserisce prima nuovi dati in un gruppo di righe OPEN in formato rowstore talvolta definito tabella delta. Quando un gruppo di righe aperto è pieno, il relativo stato cambia in CLOSED. Un gruppo di righe chiuso viene compresso nel formato columnstore dal processo tuple-mover e lo stato viene modificato 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 gruppi di righe deallocati vengono contrassegnati come RETIRED. Per eseguire immediatamente il processo tuple-mover, utilizzare 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 dell'autorizzazione VIEW DEFINITION 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 ulteriori informazioni, vedere Configurazione della visibilità dei metadati.
Esempi
Nell'esempio seguente viene creato un join della tabella sys.column_store_row_groups ad altre tabelle di sistema per ottenere 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;
Vedere anche
Riferimento
Viste del catalogo per gli oggetti (Transact-SQL)
Viste del catalogo (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)
Concetti
Domande frequenti sull'esecuzione di query sul catalogo di sistema di SQL Server