sys.pdw_nodes_column_store_segments (Transact-SQL)

S’applique à : Azure Synapse AnalyticsAnalytics Platform System (PDW)

Contient une ligne pour chaque colonne dans un index columnstore.

Nom de la colonne Type de données Description
partition_id bigint Indique l'ID de partition. Unique dans une base de données.
hobt_id bigint ID du segment ou de l'index d'arbre B (B-tree) pour la table ayant cet index columnstore.
column_id int ID de la colonne columnstore.
segment_id int Retourne le segment de la colonne. Pour la compatibilité descendante, le nom de la colonne continue d’être appelé segment_id même s’il s’agit de l’ID de rowgroup. Vous pouvez identifier un segment de manière unique à l’aide <de hobt_id, partition_id, column_id> segment_id<>.
version int Version du format de segment de colonne.
encoding_type int Type d’encodage utilisé pour ce segment :

1 = VALUE_BASED - non-chaîne/binaire sans dictionnaire (semblable à 4 avec quelques variantes internes)

2 = VALUE_HASH_BASED - colonne non-chaîne/binaire avec des valeurs courantes dans le dictionnaire

3 = STRING_HASH_BASED - chaîne/colonne binaire avec des valeurs courantes dans le dictionnaire

4 = STORE_BY_VALUE_BASED - non-chaîne/binaire sans dictionnaire

5 = STRING_STORE_BY_VALUE_BASED - chaîne/binaire sans dictionnaire

Tous les encodages tirent parti de l’empaquetage de bits et de l’encodage de longueur d’exécution lorsque cela est possible.
row_count int Nombre de lignes dans le groupe de lignes.
has_nulls int 1 si le segment de colonne a des valeurs NULL.
base_id bigint ID de valeur de base si le type d’encodage 1 est utilisé. Si le type d’encodage 1 n’est pas utilisé, base_id est défini sur 1.
Ampleur float Magnitude si le type d’encodage 1 est utilisé. Si le type d’encodage 1 n’est pas utilisé, la magnitude est définie sur 1.
primary__dictionary_id int ID du dictionnaire principal. Une valeur autre que zéro pointe vers le dictionnaire local pour cette colonne dans le segment actuel (c’est-à-dire le rowgroup). La valeur -1 indique qu’il n’existe aucun dictionnaire local pour ce segment.
secondary_dictionary_id int ID du dictionnaire secondaire. Une valeur autre que zéro pointe vers le dictionnaire local pour cette colonne dans le segment actuel (c’est-à-dire le rowgroup). La valeur -1 indique qu’il n’existe aucun dictionnaire local pour ce segment.
min_data_id bigint ID de données minimal dans le segment de colonne.
max_data_id bigint ID de données maximal dans le segment de colonne.
null_value bigint Valeur utilisée pour représenter les valeurs NULL.
on_disk_size bigint Taille de segment en octets.
pdw_node_id int Identificateur unique d’un nœud Azure Synapse Analytics.

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

Joignez sys.pdw_nodes_column_store_segments à d’autres tables système pour déterminer le nombre de segments columnstore par table logique.

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 ;

Autorisations

Nécessite l’autorisation VIEW SERVER STATE.

Voir aussi

Vues de catalogue Azure Synapse Analytics et 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)