Partager via


sys.column_store_row_groups (Transact-SQL)

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 possède une colonne pour le nombre total de lignes stockées physiquement (y compris celles marquées comme étant supprimées) et une autre pour le nombre de lignes marquées comme étant supprimées. Utilisez sys.column_store_row_groups pour déterminer les groupes de lignes qui ont un pourcentage élevé de lignes supprimées et doivent être reconstruits.

S'applique à : SQL Server (SQL Server 2014 via la version actuelle).

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.

delta_store_hobt_id

bigint

hobt_id des groupes de lignes delta, ou NULL si le type de groupe de lignes n'est pas delta. Un groupe de lignes delta est un groupe de lignes en lecture/écriture qui reçoit des enregistrements. Un groupe de lignes delta à l'état OPEN. Un groupe de lignes delta est toujours au format rowstore et n'a pas été compressé au format columnstore.

state

tinyint

Numéro d'ID associé à state_description.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

state_description

nvarchar(60)

Description de l'état permanent du groupe de lignes :

INVISIBLE – Un segment compressé masqué en cours de génération à partir des données dans une banque 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 - Un groupe de lignes en lecture/écriture qui reçoit des enregistrements. Un groupe de lignes ouvert est toujours au format rowstore et n'a pas été compressé au format columnstore.

CLOSED – Un groupe de lignes qui a été renseigné, mais pas encore compressé par le processus du moteur de tuple.

COMPRESSED – Un 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 modifiable insère au préalable de nouvelles données dans un rowgroup OPEN, qui est au format rowstore, et est parfois appelé table delta. Une fois qu'un rowgroup ouvert est saturé, son état passe à CLOSED. Un rowgroup fermé est compressé au format columnstore par le moteur de tuple et son é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 libérés sont marqués comme étant RETIRED. Pour exécuter le moteur de tuple immédiatement, 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 dispose de l'autorisation VIEW DEFINITION 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 Configuration de la visibilité des métadonnées.

Exemple

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 avant la clause WHERE et spécifiez 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

Référence

Vues de catalogue d'objets (Transact-SQL)

Affichages catalogue (Transact-SQL)

sys.columns (Transact-SQL)

sys.all_columns (Transact-SQL)

sys.computed_columns (Transact-SQL)

sys.column_store_dictionaries (Transact-SQL)

sys.column_store_segments (Transact-SQL)

Concepts

Questions fréquentes sur l'interrogation des catalogues système de SQL Server

Description des index columnstore

Description des index columnstore