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)