sys.pdw_nodes_column_store_row_groups (Transact-SQL)
Si applica a: Azure Synapse Analytics Piattaforma 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. |
dellta_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_desccription | 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)