Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : SQL Server 2016 (13.x) et versions
ultérieures Azure SQL SQL Managed
Instance
SQL database in Microsoft Fabric
Fournit des informations de niveau rowgroup actuelles sur tous les index columnstore dans la base de données active.
Cette vue de gestion dynamique étend l’affichage catalogue sys.column_store_row_groups.
| Nom de colonne | Type de données | Description |
|---|---|---|
object_id |
int | ID de la table sous-jacente. |
index_id |
int | ID de cet index columnstore sur object_id la table. |
partition_number |
int | ID de la partition de table qui contient row_group_id. Vous pouvez utiliser partition_number pour joindre ce DMV à sys.partitions |
row_group_id |
int | ID de ce groupe de lignes. Pour les tables partitionnée, la valeur est unique dans la partition.-1 pour une queue en mémoire. |
delta_store_hobt_id |
bigint | Hobt_id d’un 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 en mémoire. |
state |
tinyint | Numéro d’ID associé state_description.0 = INVISIBLE1= OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONECOMPRESSED est le seul état qui s’applique aux tables en mémoire. |
state_desc |
nvarchar(60) | Description de l’état du groupe de lignes :0
-
INVISIBLE - Groupe de lignes en cours de génération. Par exemple:Un groupe de lignes dans le columnstore est INVISIBLE alors que les données sont compressées. Une fois la compression terminée, un commutateur de métadonnées change l’état du groupe de lignes columnstore de INVISIBLE vers COMPRESSED, et l’état du groupe de lignes deltastore de à CLOSEDpartir de TOMBSTONE .1
-
OPEN - Groupe de lignes deltastore qui accepte de nouvelles lignes. Un groupe de lignes ouvert est toujours au format rowstore et n’a pas été compressé au format columnstore.2
-
CLOSED - Groupe de lignes dans le magasin delta qui contient le nombre maximal de lignes et attend que le processus de déplacement du tuple le compresse dans le columnstore.3
-
COMPRESSED - Groupe de lignes compressé avec compression columnstore et stocké dans columnstore.4
-
TOMBSTONE - Groupe de lignes qui était anciennement dans le deltastore et n’est plus utilisé. |
total_rows |
bigint | Nombre de lignes stockées physiquement dans le groupe de lignes. Pour les groupes de lignes compressés. Inclut les lignes marquées comme supprimées. |
deleted_rows |
bigint | Nombre de lignes physiquement stockées dans un groupe de lignes compressé marqué pour suppression.0 pour les groupes de lignes qui se trouvent dans le magasin 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 combinée, en octets, de toutes les pages de ce groupe de lignes. Cette taille n’inclut pas la taille requise pour stocker les métadonnées ou les dictionnaires partagés. |
trim_reason |
tinyint | Raison pour laquelle le COMPRESSED groupe de lignes a déclenché un nombre inférieur au nombre maximal de lignes.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION1 - NO_TRIM2 - BULKLOAD3 - REORG4 - DICTIONARY_SIZE5 - MEMORY_LIMITATION6 - RESIDUAL_ROW_GROUP7 - STATS_MISMATCH8 - SPILLOVER9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) | Description de trim_reason.0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: s’est produit lors de la mise à niveau à partir de la version précédente de SQL Server.1
-
NO_TRIM: Le groupe de lignes n’a pas été rogné. Le groupe de ligne a été compressé avec le maximum de 1 048 576 lignes. Le nombre de lignes peut être inférieur si un sous-ensemble de lignes a été supprimé après la fermeture du rowgroup delta2
-
BULKLOAD: la taille du lot de chargement en bloc a limité le nombre de lignes.3
-
REORG: compression forcée dans le cadre de la REORG commande.4
-
DICTIONARY_SIZE: la taille du dictionnaire a augmenté trop grande pour compresser toutes les lignes ensemble.5
-
MEMORY_LIMITATION: mémoire insuffisante pour compresser toutes les lignes ensemble.6
-
RESIDUAL_ROW_GROUP: fermé dans le cadre du dernier groupe de lignes avec des < lignes de 1 million pendant l’opération de génération d’index.Remarque : une build de partition avec plusieurs cœurs peut entraîner plusieurs découpages de ce type. 7
-
STATS_MISMATCH: uniquement pour columnstore sur la table en mémoire. Si les statistiques indiquent >incorrectement = 1 million de lignes qualifiées dans la queue, mais nous avons trouvé moins, le rowgroup compressé aura < 1 million de lignes8
-
SPILLOVER: uniquement pour columnstore sur la table en mémoire. Si tail a > 1 million de lignes qualifiées, les dernières lignes restantes sont compressées si le nombre est compris entre 100 000 et 1 million9
-
AUTO_MERGE: opération de fusion tuple Mover exécutée en arrière-plan consolidée une ou plusieurs rowgroups dans ce rowgroup. |
transition_to_compressed_state |
tinyint | Montre comment ce rowgroup a été déplacé du deltastore à un état compressé dans le columnstore.1 - NOT_APPLICABLE2 - INDEX_BUILD3 - TUPLE_MOVER4 - REORG_NORMAL5 - REORG_FORCED6 - BULKLOAD7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE : l’opération ne s’applique pas au deltastore. Ou bien, le rowgroup a été compressé avant la mise à niveau vers SQL Server 2016 (13.x), auquel cas l’historique n’est pas conservé.2
-
INDEX_BUILD - Création d’index ou reconstruction d’index compressé le rowgroup.3
-
TUPLE_MOVER - Le sélecteur de tuple s’exécutant en arrière-plan a compressé le rowgroup. Le mover tuple se produit après que le rowgroup change d’état de OPEN vers CLOSED.4
-
REORG_NORMAL - L’opération de réorganisation, a ALTER INDEX ... REORGdéplacé le CLOSED rowgroup du deltastore vers le columnstore. Cela s’est produit avant que le tuple-mover ait eu le temps de déplacer le rowgroup.5
-
REORG_FORCED - Ce rowgroup a été ouvert dans le deltastore et a été forcé dans le columnstore avant qu’il n’ait un nombre complet de lignes.6
-
BULKLOAD - Une opération de chargement en bloc a compressé directement le rowgroup sans utiliser le deltastore.7
-
MERGE - Une opération de fusion a consolidé un ou plusieurs rowgroups dans ce rowgroup, puis effectué la compression columnstore. |
has_vertipaq_optimization |
bit | L’optimisation de VertiPaq améliore la compression columnstore en réorganisant l’ordre des lignes du rowgroup pour obtenir une compression plus élevée. Cette optimisation se produit automatiquement dans la plupart des cas. Il existe deux cas où l’optimisation vertiPaq n’est pas utilisée : a. lorsqu’un rowgroup delta se déplace dans columnstore et qu’il existe un ou plusieurs index non-cluster sur l’index columnstore . Dans ce cas, l’optimisation vertiPaq est ignorée pour réduire les modifications apportées à l’index de mappage ; b. pour les index columnstore sur les tables optimisées en mémoire. 0 = Non1 = Oui |
generation |
bigint | Génération de groupe de lignes associée à ce groupe de lignes. |
created_time |
datetime2 | Heure de la création de ce rowgroup.NULL - pour un index columnstore sur une table en mémoire. |
closed_time |
datetime2 | Heure de la fermeture de ce rowgroup.NULL - pour un index columnstore sur une table en mémoire. |
Results
Retourne une ligne pour chaque rowgroup dans la base de données active.
Permissions
Nécessite CONTROL une autorisation sur la table et VIEW DATABASE STATE l’autorisation sur la base de données.
Autorisations pour SQL Server 2022 (et versions plus récentes)
Requiert l'autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.
Examples
A. Calculer la fragmentation pour décider quand réorganiser ou reconstruire un index columnstore
Pour les index columnstore, le pourcentage de lignes supprimées est une bonne mesure de la fragmentation dans un rowgroup. Lorsque la fragmentation est de 20 % ou plus, supprimez les lignes supprimées. Pour plus d’exemples, consultez Optimiser la maintenance des index pour améliorer les performances des requêtes et réduire la consommation des ressources.
Cet exemple joint sys.dm_db_column_store_row_group_physical_stats à d’autres tables système, puis calcule la Fragmentation colonne en tant qu’estimation de l’efficacité de chaque groupe de lignes dans la base de données active. Pour trouver des informations sur une seule table, supprimez les traits d’union de commentaire devant la WHERE clause 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 * (ISNULL(deleted_rows, 0)) / NULLIF (total_rows, 0) AS 'Fragmentation'
FROM sys.indexes AS i
INNER JOIN sys.dm_db_column_store_row_group_physical_stats 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;