Partager via


sys.column_store_row_groups (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase 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 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

4 = 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.