Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Fournit des informations d’index columnstore par segment.
Pour les index columnstore en cluster, sys.column_store_row_groups contient une colonne pour le nombre total de lignes stockées physiquement (y compris celles marquées comme supprimées) et une colonne pour le nombre de lignes marquées comme supprimées. Permet sys.column_store_row_groups de déterminer quels groupes de lignes ont un pourcentage élevé de lignes supprimées et doivent être reconstruits.
| Nom de la colonne | Type de données | Description |
|---|---|---|
object_id |
int | ID de la table sur laquelle cet index est défini. |
index_id |
int | ID de l’index columnstore. |
partition_number |
int | Partition de table qui contient le groupe de lignes identifié par row_group_id. Permet partition_number de joindre sys.partitions. |
row_group_id |
int | Numéro de groupe de lignes associé à ce groupe de lignes. Ce nombre est unique dans la partition. -1 = fin d’une table optimisée en mémoire. |
delta_store_hobt_id |
bigint | Pour hobt_id un OPEN groupe de lignes dans le magasin delta.NULL si le groupe de lignes n’est pas dans le magasin delta. NULL pour la fin d’une table optimisée en mémoire. |
state |
tinyint | Nombre décrivant l’état du groupe de lignes. 0 = INVISIBLE1 = OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONE |
state_description |
nvarchar(60) | Description de l’état du groupe de lignes :INVISIBLE - Segment compressé masqué dans le processus de génération de données dans un magasin delta. Les actions de lecture utilisent le magasin delta jusqu’à ce que le segment compressé invisible soit terminé. Ensuite, le nouveau le segment est rendu visible, et la banque delta source est supprimée.OPEN - Groupe de lignes en lecture/écriture qui accepte de nouvelles lignes. Un groupe de lignes ouvert est toujours au format rowstore et n’est pas compressé au format columnstore.CLOSED - Groupe de lignes rempli, mais pas encore compressé par le processus de déplacement du tuple.COMPRESSED - Groupe de lignes rempli et compressé. |
total_rows |
bigint | Nombre total de lignes stockées physiquement dans le groupe de lignes. Les lignes supprimées peuvent toujours être stockées. Le nombre maximal de lignes d’un groupe de lignes est de 1 048 576. |
deleted_rows |
bigint | Nombre total de lignes dans le groupe de lignes qui sont marquées supprimées, mais qui restent stockées. Cette valeur est toujours 0 destinée aux groupes de lignes delta.Pour les index columnstore non cluster, cette valeur n’inclut pas les lignes supprimées stockées dans la mémoire tampon de suppression. Pour plus d’informations et pour trouver le nombre de lignes supprimées dans la mémoire tampon de suppression, consultez sys.internal_partitions. |
size_in_bytes |
bigint | Taille en octets de toutes les données de ce groupe de lignes (sans inclure les métadonnées ou les dictionnaires partagés), pour les rowgroups delta store et columnstore. |
Notes
Retourne une ligne pour chaque groupe de lignes columnstore pour chaque partition de chaque table qui a un index columnstore cluster ou non cluster.
Permet sys.column_store_row_groups de déterminer le nombre de lignes dans le groupe de lignes et la taille du groupe de lignes.
Lorsque le nombre de lignes supprimées dans un groupe de lignes atteint un fort pourcentage du nombre total de lignes, la table est moins efficace. Reconstruisez l'index columnstore pour réduire la taille de la table, ce qui réduit les E/S disque nécessaires pour lire la table. Pour reconstruire l’index columnstore, utilisez la REBUILD clause de l’instruction ALTER INDEX .
Le columnstore pouvant être mis à jour insère d’abord de nouvelles données dans un rowgroup ouvert, qui est au format rowstore, et est également parfois appelé table delta. Une fois qu’un rowgroup ouvert est plein, son état passe à CLOSED. Un rowgroup fermé est compressé au format columnstore par le mover tuple et l’état passe à COMPRESSED. Le moteur de tuple est un processus en arrière-plan qui se réveille régulièrement et vérifie s'il existe des rowgroups fermés prêts à être compressés dans un rowgroup columnstore. Le sélecteur de tuples libère également tous les rowgroups dans lesquels chaque ligne est supprimée. Les rowgroups désalloués sont marqués comme TOMBSTONE. Pour exécuter immédiatement le mover tuple, utilisez la REORGANIZE clause de l’instruction ALTER INDEX .
Lorsqu’un groupe de lignes columnstore se remplit, il est compressé et cesse d’accepter de nouvelles lignes. Lorsque vous supprimez des lignes d’un groupe compressé, elles restent mais sont marquées comme supprimées. Les mises à jour dans un groupe compressé sont implémentées comme une suppression du groupe compressé, et une insertion dans un groupe ouvert.
autorisations
Retourne des informations pour une table si l’utilisateur a VIEW DEFINITION l’autorisation sur la table.
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 la configuration de la visibilité des métadonnées.
Exemples
L’exemple suivant joint la sys.column_store_row_groups vue et d’autres vues système pour retourner des informations sur les index columnstore en cluster. La percent_full colonne est une estimation de l’efficacité du groupe de lignes.
SELECT i.object_id,
OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
OBJECT_NAME(i.object_id) AS table_name,
i.name AS index_name,
i.type_desc AS index_type_desc,
rg.partition_number,
rg.row_group_id,
rg.state_description,
rg.total_rows,
rg.deleted_rows,
rg.size_in_bytes,
100 * (rg.total_rows - ISNULL(rg.deleted_rows, 0)) / total_rows AS percent_full
FROM sys.indexes AS i
INNER JOIN sys.column_store_row_groups AS rg
ON i.object_id = rg.object_id
AND i.index_id = rg.index_id
WHERE INDEXPROPERTY(i.object_id, i.name, 'IsClustered') = 1
ORDER BY schema_name, table_name, index_name, row_group_id;
Pour plus d’informations, consultez Vérifier la fragmentation d’un index columnstore.