Поделиться через


sys.pdw_nodes_column_store_segments (Transact-SQL)

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

Содержит по одной строке для каждого столбца в индексе columnstore.

Имя столбца Тип данных Description
partition_id bigint Указывает идентификатор секции. Уникален в базе данных.
hobt_id bigint Идентификатор кучи или индекс сбалансированного дерева (hobt) для таблицы, в которой содержится индекс columnstore.
column_id int Идентификатор столбца columnstore.
segment_id int Идентификатор сегмента столбца. Для обратной совместимости имя столбца продолжает вызываться segment_id даже если это идентификатор группы строк. Вы можете однозначно определить сегмент с помощью <hobt_id, partition_id, column_id, <segment_id>>.
version int Версия формата сегмента столбца.
encoding_type int Тип кодировки, используемой для этого сегмента:

1 = VALUE_BASED - нестрочная или двоичная без словаря (аналогично 4 с некоторыми внутренними вариациями)

2 = VALUE_HASH_BASED — нестрочного или двоичного столбца с общими значениями в словаре

3 = STRING_HASH_BASED — строковый или двоичный столбец с общими значениями в словаре

4 = STORE_BY_VALUE_BASED — нестрочная или двоичная без словаря

5 = STRING_STORE_BY_VALUE_BASED — строка или двоичный файл без словаря

Все кодировки по возможности используют кодировку битовой упаковки и длины выполнения.
row_count int Число строк в группе строк.
has_nulls int Значение 1, если сегмент столбца содержит значения NULL.
base_id bigint Базовый идентификатор значения, если используется тип 1 кодирования. Если тип кодирования 1 не используется, base_id имеет значение 1.
величина float Величина, если используется тип 1 кодировки. Если тип кодирования 1 не используется, величина имеет значение 1.
primary__dictionary_id int Идентификатор основного словаря. Значение, отличное от нуля, указывает на локальный словарь для этого столбца в текущем сегменте (т. е. группу строк). Значение -1 указывает, что для этого сегмента отсутствует локальный словарь.
secondary_dictionary_id int Идентификатор дополнительного словаря. Значение, отличное от нуля, указывает на локальный словарь для этого столбца в текущем сегменте (т. е. группу строк). Значение -1 указывает, что для этого сегмента отсутствует локальный словарь.
min_data_id bigint Минимальный идентификатор данных в сегменте столбца.
max_data_id bigint Максимальный идентификатор данных в сегменте столбца.
null_value bigint Значение, используемое для представления значений NULL.
on_disk_size bigint Размер сегмента в байтах.
pdw_node_id int Уникальный идентификатор узла Azure Synapse Analytics.

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

Присоединяйте sys.pdw_nodes_column_store_segments с другими системными таблицами, чтобы определить количество сегментов columnstore на логическую таблицу.

SELECT  sm.name           as schema_nm
,       tb.name           as table_nm
,       nc.name           as col_nm
,       nc.column_id
,       COUNT(*)          as segment_count
FROM    sys.[schemas] sm
JOIN    sys.[tables] tb                   ON  sm.[schema_id]          = tb.[schema_id]
JOIN    sys.[pdw_table_mappings] mp       ON  tb.[object_id]          = mp.[object_id]
JOIN    sys.[pdw_nodes_tables] nt         ON  nt.[name]               = mp.[physical_name]
JOIN    sys.[pdw_nodes_partitions] np     ON  np.[object_id]          = nt.[object_id]
                                          AND np.[pdw_node_id]        = nt.[pdw_node_id]
                                          AND np.[distribution_id]    = nt.[distribution_id]
JOIN    sys.[pdw_nodes_columns] nc        ON  np.[object_id]          = nc.[object_id]
                                          AND np.[pdw_node_id]        = nc.[pdw_node_id]
                                          AND np.[distribution_id]    = nc.[distribution_id]
JOIN    sys.[pdw_nodes_column_store_segments] rg  ON  rg.[partition_id]         = np.[partition_id]
                                                      AND rg.[pdw_node_id]      = np.[pdw_node_id]
                                                      AND rg.[distribution_id]  = np.[distribution_id]
                                                      AND rg.[column_id]        = nc.[column_id]
GROUP BY    sm.name
,           tb.name
,           nc.name
,           nc.column_id  
ORDER BY    table_nm
,           nc.column_id
,           sm.name ;

Разрешения

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

См. также

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