Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Retourne une ligne pour chaque segment de colonne dans un index columnstore. Il existe un segment de colonne par colonne par rowgroup. Par exemple, un index columnstore avec 10 rowgroups et 34 colonnes comporte 340 lignes dans cette vue.
| 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 tas ou de l’index B-tree (HoBT) pour la table qui a cet index columnstore. |
column_id |
int | ID de la colonne columnstore. |
segment_id |
int | ID du rowgroup. Pour une compatibilité descendante, le nom de colonne continue d’être appelé segment_id même s’il s’agit de l’ID de rowgroup. Vous pouvez identifier de manière unique un segment à l’aide <hobt_id, partition_id, column_id, segment_id>de . |
version |
int | Version du format de segment de colonne. |
encoding_type |
int | Type d’encodage utilisé pour ce segment : 1 = VALUE_BASED - non-string/binary sans dictionnaire (similaire à 4 avec certaines variantes internes) 2 = VALUE_HASH_BASED - colonne non-string/binaire avec des valeurs courantes dans le dictionnaire 3 = STRING_HASH_BASED - colonne chaîne/binaire avec des valeurs communes dans le dictionnaire 4 = STORE_BY_VALUE_BASED - non-string/binary sans dictionnaire 5 = STRING_STORE_BY_VALUE_BASED - chaîne/binaire sans dictionnaire Pour plus d’informations, consultez la section Remarques. |
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. |
magnitude |
float | Magnitude si le type d’encodage 1 est utilisé. Si le type d’encodage 1 n’est pas utilisé, magnitude est défini sur -1. |
primary_dictionary_id |
int | La valeur 0 représente le dictionnaire global. La valeur -1 indique qu’il n’existe aucun dictionnaire global créé pour cette colonne. |
secondary_dictionary_id |
int | Une valeur non nulle pointe vers le dictionnaire local pour cette colonne dans le segment actuel (par exemple, le rowgroup). La valeur -1 indique qu’il n’existe aucun dictionnaire local pour ce segment. |
min_data_id |
bigint | Pour une utilisation interne uniquement. |
max_data_id |
bigint | Pour une utilisation interne uniquement. |
null_value |
bigint | Valeur utilisée pour représenter les valeurs NULL. |
on_disk_size |
bigint | Taille de segment en octets. |
collation_id |
int | Classement actuel lors de la création du segment. Mappe à un ID interne. Pour une utilisation interne uniquement. s’applique à : SQL Server 2022 (16.x) et versions ultérieures, Azure SQL Database et Azure SQL Managed Instance |
min_deep_data |
varbinary(18) | Utilisé pour l’élimination des segments.1 Pour une utilisation interne uniquement. s’applique à : SQL Server 2022 (16.x) et versions ultérieures, Azure SQL Database et Azure SQL Managed Instance |
max_deep_data |
varbinary(18) | Utilisé pour l’élimination des segments.1 Pour une utilisation interne uniquement. s’applique à : SQL Server 2022 (16.x) et versions ultérieures, Azure SQL Database et Azure SQL Managed Instance |
1 Après la mise à niveau vers une version du moteur de base de données qui prend en charge l’élimination de segments min/max pour un ensemble étendu de types de données (introduit dans SQL Server 2022 (16.x)), et min_deep_datamax_deep_data sont NULL jusqu’à ce que l’index columnstore soit reconstruit à l’aide d’une instruction ou CREATE INDEX ... WITH (DROP_EXISTING = ON) d’une ALTER INDEX ... REBUILD instruction.
Notes
Le type d’encodage de segment columnstore est sélectionné par le moteur de base de données en analysant les données de segment dans le but d’atteindre le coût de stockage le plus bas. Si les données sont principalement distinctes, la Moteur de base de données utilise l’encodage basé sur des valeurs. Si les données ne sont généralement pas distinctes, la Moteur de base de données utilise l’encodage basé sur le hachage. Le choix entre l’encodage basé sur une chaîne et basé sur des valeurs est lié au type de données stockées, que les données de chaîne ou les données binaires soient stockées. Tous les encodages tirent parti de l’empaquetage de bits et de l’encodage de longueur d’exécution lorsque cela est possible.
L’élimination des segments Columnstore s’applique aux types de données numériques, de date et d’heure et au type de données datetimeoffset avec une échelle inférieure ou égale à deux. À compter de SQL Server 2022 (16.x), les fonctionnalités d’élimination des segments s’étendent aux types de données chaîne et binaire, au type de données uniqueidentifier et au type de données datetimeoffset pour une mise à l’échelle supérieure à deux. L’élimination de segment ne s’applique pas aux types de données métier tels que varchar(max), nvarchar(max)et varbinary(max). Pour plus d’informations, consultez les nouveautés concernant les index columnstore.
autorisations
L’autorisation VIEW DEFINITION sur la vue est requise. Les colonnes suivantes retournentNULL, sauf si l’utilisateur dispose également de l’autorisation SELECT : has_nulls, , base_id, magnitudemin_data_id, , max_data_idet null_value.
La visibilité des métadonnées dans les affichages catalogue est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Metadata Visibility Configuration.
Exemples
La requête suivante retourne des informations sur les segments d'un index columnstore.
SELECT i.name, p.object_id, p.index_id, i.type_desc,
COUNT(*) AS number_of_segments
FROM sys.column_store_segments AS s
INNER JOIN sys.partitions AS p
ON s.hobt_id = p.hobt_id
INNER JOIN sys.indexes AS i
ON p.object_id = i.object_id
WHERE i.type = 5 OR i.type = 6
GROUP BY i.name, p.object_id, p.index_id, i.type_desc;
Contenu connexe
- Description des index columnstore
- Réglage des performances avec des index columnstore ordonnés
- Vues de catalogue d'objets (Transact-SQL)
- Affichages catalogue (Transact-SQL)
- Questions fréquentes sur l'interrogation des catalogues système de SQL Server
- sys.columns (Transact-SQL)
- sys.all_columns (Transact-SQL)
- sys.computed_columns (Transact-SQL)
- sys.column_store_dictionaries (Transact-SQL)