sys.column_store_row_groups (Transact-SQL)

S’applique à : SQL Server 2012 (11.x) et azure SQL Managed Instance ultérieure

Fournit des informations sur les index cluster columnstore pour chaque segment afin d'aider l'administrateur à prendre des décisions de gestion du système. sys.column_store_row_groups a 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. Utilisez sys.column_store_row_groups pour 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 de la table qui contient cet index columnstore.
partition_number int ID de la partition de table qui contient le row_group_id de groupe de lignes. Utilisez partition_number pour joindre cette vue DMV à sys.partitions.
row_group_id int Numéro de groupe de lignes associé à ce groupe de lignes. Cet ID est unique dans la partition.

-1 = fin d’une table en mémoire.
delta_store_hobt_id bigint Hobt_id pour le groupe de lignes OPEN dans le magasin delta.

NULL si le groupe de lignes n’est pas dans le magasin delta.

NULL pour la fin d’une table en mémoire.
state tinyint Numéro d'ID associé à state_description.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSÉ

4 = TOMBSTONE
state_description nvarchar(60) Description de l'état permanent du groupe de lignes :

INVISIBLE -Un segment compressé masqué dans le processus de génération à partir de données dans un magasin delta. Les actions de lecture utiliseront la banque delta jusqu'à ce que le segment compressé masqué 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 nouveaux enregistrements. Un groupe de lignes ouvert est toujours au format rowstore et n'a pas été compressé au format columnstore.

CLOSED - Groupe de lignes qui a été rempli, mais pas encore compressé par le processus de déplacement du tuple.

COMPRESSÉ : groupe de lignes rempli et compressé.
total_rows bigint Nombre total de lignes stockées physiquement dans le groupe de lignes. Certaines peuvent avoir été supprimées, mais elles sont toujours stockées. Le nombre maximal de lignes d'un groupe de lignes est 1 048 576 (hexadécimal FFFFF).
deleted_rows bigint Nombre total de lignes marquées comme étant supprimées dans le groupe de lignes. Cette valeur est toujours 0 pour les groupes de lignes DELTA.
size_in_bytes bigint Taille en octets de toutes les données dans ce groupe de lignes (sans les métadonnées ou les dictionnaires partagés), pour les rowgroups DELTA et COLUMNSTORE.

Notes

Retourne une ligne pour chaque groupe de lignes columnstore pour chaque table ayant un index columnstore cluster ou non cluster.

Utilisez sys.column_store_row_groups pour déterminer le nombre de lignes incluses 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 l’option REBUILD de l’instruction ALTER INDEX .

Le columnstore pouvant être mis à jour insère d’abord de nouvelles données dans un rowgroup OPEN , 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 moteur de tuple libère également les rowgroups dans lesquels chaque ligne a été supprimée. Les rowgroups désalloués sont marqués comme TOMBSTONE. Pour exécuter immédiatement le mover tuple, utilisez l’option REORGANIZE de l’instruction ALTER INDEX .

Lorsqu'un groupe de lignes columnstore est rempli, il est compressé, et cesse de recevoir de nouvelles lignes. Lorsque vous supprimez des lignes d'un groupe compressé, elles sont conservées mais sont marquées comme étant 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 Metadata Visibility Configuration.

Exemples

L’exemple suivant joint la table sys.column_store_row_groups à d’autres tables système pour retourner des informations sur des tables spécifiques. La colonne calculée PercentFull est une estimation de l'efficacité du groupe de lignes. Pour rechercher des informations sur une seule table, supprimez les traits d’union de commentaire devant la clause WHERE et fournissez un nom de table.

SELECT i.object_id, object_name(i.object_id) AS TableName,   
i.name AS IndexName, i.index_id, i.type_desc,   
CSRowGroups.*,   
100*(total_rows - ISNULL(deleted_rows,0))/total_rows AS PercentFull    
FROM sys.indexes AS i  
JOIN sys.column_store_row_groups AS CSRowGroups  
    ON i.object_id = CSRowGroups.object_id  
AND i.index_id = CSRowGroups.index_id   
--WHERE object_name(i.object_id) = '<table_name>'   
ORDER BY object_name(i.object_id), i.name, row_group_id;  

Voir aussi

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)
Description des index columnstore
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)