Condividi tramite


sys.pdw_nodes_column_store_row_groups (Transact-SQL)

Si applica a:Azure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

Fornisce informazioni sull'indice columnstore cluster per segmento per aiutare l'amministratore a prendere decisioni di gestione del sistema in Azure Synapse Analytics. sys.pdw_nodes_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.pdw_nodes_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 sottostante. Si tratta della tabella fisica nel nodo Calcolo, non della object_id per la tabella logica nel nodo Controllo. Ad esempio, object_id non corrisponde al object_id in sys.tables.

Per eseguire il join con sys.tables, usare sys.pdw_index_mappings.
index_id int ID dell'indice columnstore cluster in object_id tabella.
partition_number int ID della partizione di tabella che contiene il gruppo di righe row_group_id. È possibile usare partition_number per aggiungere questa DMV a sys.partitions.
row_group_id int ID del 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 differenziale ha 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.

1 = OPEN

2 = CLOSED

3 = COMPRESSED
state_description nvarchar(60) Descrizione dello stato persistente del gruppo di righe:

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 Numero di righe archiviate fisicamente nel gruppo di righe contrassegnate per l'eliminazione.

Sempre 0 per i gruppi di righe DELTA.
size_in_bytes int Dimensioni combinate, in byte, di tutte le pagine di questo gruppo di righe. Questa dimensione non include le dimensioni necessarie per archiviare i metadati o i dizionari condivisi.
pdw_node_id int ID univoco di un nodo di Azure Synapse Analytics.
distribution_id int ID univoco della distribuzione.

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.pdw_nodes_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 RITIRATI. 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

È richiesta l'autorizzazione VIEW SERVER STATE.

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

Nell'esempio seguente la tabella sys.pdw_nodes_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 IndexMap.object_id,   
  object_name(IndexMap.object_id) AS LogicalTableName,   
  i.name AS LogicalIndexName, IndexMap.index_id, NI.type_desc,   
  IndexMap.physical_name AS PhyIndexNameFromIMap,   
  CSRowGroups.*,  
  100*(ISNULL(deleted_rows,0))/total_rows AS PercentDeletedRows   
FROM sys.tables AS t  
JOIN sys.indexes AS i  
    ON t.object_id = i.object_id  
JOIN sys.pdw_index_mappings AS IndexMap  
    ON i.object_id = IndexMap.object_id  
    AND i.index_id = IndexMap.index_id  
JOIN sys.pdw_nodes_indexes AS NI  
    ON IndexMap.physical_name = NI.name  
    AND IndexMap.index_id = NI.index_id  
JOIN sys.pdw_nodes_column_store_row_groups AS CSRowGroups  
    ON CSRowGroups.object_id = NI.object_id   
    AND CSRowGroups.pdw_node_id = NI.pdw_node_id  
    AND CSRowGroups.distribution_id = NI.distribution_id
    AND CSRowGroups.index_id = NI.index_id      
WHERE total_rows > 0
--WHERE t.name = '<table_name>'   
ORDER BY object_name(i.object_id), i.name, IndexMap.physical_name, pdw_node_id;  

L'esempio di Azure Synapse Analytics seguente conta le righe per partizione per gli archivi di colonne cluster e il numero di righe in gruppi di righe aperti, chiusi o compressi:

SELECT
    s.name AS [Schema Name]
    ,t.name AS [Table Name]
    ,rg.partition_number AS [Partition Number]
    ,SUM(rg.total_rows) AS [Total Rows]
    ,SUM(CASE WHEN rg.State = 1 THEN rg.Total_rows Else 0 END) AS [Rows in OPEN Row Groups]
    ,SUM(CASE WHEN rg.State = 2 THEN rg.Total_Rows ELSE 0 END) AS [Rows in Closed Row Groups]
    ,SUM(CASE WHEN rg.State = 3 THEN rg.Total_Rows ELSE 0 END) AS [Rows in COMPRESSED Row Groups]
FROM sys.pdw_nodes_column_store_row_groups rg
  JOIN sys.pdw_nodes_tables pt
    ON rg.object_id = pt.object_id
    AND rg.pdw_node_id = pt.pdw_node_id
    AND pt.distribution_id = rg.distribution_id
  JOIN sys.pdw_table_mappings tm
    ON pt.name = tm.physical_name
  INNER JOIN sys.tables t
    ON tm.object_id = t.object_id
  INNER JOIN sys.schemas s
    ON t.schema_id = s.schema_id
GROUP BY s.name, t.name, rg.partition_number
ORDER BY 1, 2

Vedi anche

Viste del catalogo di Azure Synapse Analytics e Parallel Data Warehouse
CREATE COLUMNSTORE INDEX (Transact-SQL)
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)