sys.pdw_nodes_column_store_row_groups (Transact-SQL)

Область применения: Azure Synapse Analytics Analytics Platform System (PDW)

Предоставляет сведения о кластеризованном индексе columnstore на уровне сегмента, чтобы помочь администратору принимать решения по управлению системой в Azure Synapse Analytics. sys.pdw_nodes_column_store_row_groups содержит столбец для общего количества строк, физически хранящихся (включая помеченные как удаленные) и столбец для количества строк, помеченных как удаленные. Используйте sys.pdw_nodes_column_store_row_groups , чтобы определить, какие группы строк имеют высокий процент удаленных строк и должны быть перестроены.

Имя столбца Тип данных Description
object_id int Идентификатор базовой таблицы. Это физическая таблица на вычислительном узле, а не object_id для логической таблицы на узле control. Например, object_id не совпадает с object_id в sys.tables.

Чтобы присоединиться к sys.tables, используйте sys.pdw_index_mappings.
index_id int Идентификатор кластеризованного индекса columnstore в таблице object_id .
partition_number int Идентификатор секции таблицы, содержащей группу строк row_group_id. Вы можете использовать partition_number для присоединения этого динамического административного представления к sys.partitions.
row_group_id int Идентификатор этой группы строк. Он уникален внутри секции.
dellta_store_hobt_id bigint Hobt_id для разностных групп строк или значение NULL, если тип группы строк не является разностным. Разностная группа строк — это группа строк для чтения и записи, которая принимает новые записи. Разностная группа строк имеет состояние OPEN . Разностная группа строк остается в формате rowstore и не сжимается в формат columnstore.
state tinyint Идентификатор, связанный с параметром state_description.

1 = OPEN;

2 = CLOSED

3 = COMPRESSED
state_desccription nvarchar(60) Описание сохраняемого состояния группы строк:

OPEN — группа строк чтения и записи, принимаюющая новые записи. Открытая группа строк остается в формате rowstore и не сжимается в формат columnstore.

CLOSED — группа строк, заполненная, но еще не сжимаемая процессом перемещения кортежа.

COMPRESSED — группа строк, заполненная и сжатая.
total_rows bigint Общее число строк, которые физически хранятся в группе строк. Некоторые из строк могли быть удалены, но хранятся и дальше. Максимальное количество строк в группе — 1 048 576 (FFFFF в шестнадцатеричном формате).
deleted_rows bigint Количество строк, физически хранящихся в группе строк, помеченных для удаления.

Всегда 0 для групп строк DELTA.
size_in_bytes int Объединенный размер (в байтах) всех страниц в этой группе строк. Этот размер не включает размер, необходимый для хранения метаданных или общих словарей.
pdw_node_id int Уникальный идентификатор узла Azure Synapse Analytics.
distribution_id int Уникальный идентификатор дистрибутива.

Замечания

Возвращает одну строку для каждой группы строк columnstore для каждой таблицы с кластеризованным или некластеризованным индексом columnstore.

Используйте sys.pdw_nodes_column_store_row_groups , чтобы определить количество строк, включенных в группу строк, и размер группы строк.

Если количество удаленных строк в группе становится большим по отношению к общему числу строк, таблица становится менее эффективной. Перестройте индекс columnstore, чтобы сократить размер таблицы и уменьшить число дисковых операций ввода-вывода, необходимых для чтения таблицы. Чтобы перестроить индекс columnstore, используйте параметр REBUILD инструкции ALTER INDEX .

Обновляемое хранилище columnstore сначала вставляет новые данные в открытую группу строк, которая находится в формате rowstore, а также иногда называется разностной таблицей. После полного завершения открытой группы строк его состояние изменяется на CLOSED. Закрытая группа строк сжимается в формат columnstore путем перемещения кортежа и изменения состояния в COMPRESSED. Процесс перемещения кортежей — это фоновый процесс, который периодически активируется и проверяет, существуют ли закрытые группы строк, готовые к сжатию в группу строк columnstore. Процесс перемещения кортежей также освобождает все группы строк, в которых удалены все строки. Освобожденные группы строк помечаются как УСТАРЕВШИЕ. Чтобы немедленно запустить перемещение кортежа, используйте параметр REORGANIZE инструкции ALTER INDEX .

Когда группа строк columnstore заполняется, она сжимаются и прекращает принимать новые строки. Когда строки удаляются из сжатой группы, они сохраняются в ней, но отмечаются как удаленные. Обновления сжатой группы реализуются как удаление из сжатой группы и вставка в открытую группу.

Разрешения

Необходимо разрешение VIEW SERVER STATE.

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

В следующем примере таблица sys.pdw_nodes_column_store_row_groups присоединяется к другим системным таблицам для возврата сведений о определенных таблицах. Вычисляемый столбец PercentFull — это оценка эффективности группы строк. Чтобы найти сведения о одной таблице, удалите дефисы комментариев перед предложением WHERE и укажите имя таблицы.

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;  

В следующем примере Azure Synapse Analytics учитываются строки для секции для кластеризованных хранилищ столбцов, а также количество строк в группах Open, Closed или Compressed Row:

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

См. также

Представления каталога Azure Synapse Analytics и Parallel Data Warehouse
CREATE COLUMNSTORE INDEX (Transact-SQL)
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)