sys.dm_db_partition_stats (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Renvoie le nombre de pages et de lignes de chaque partition de la base de données active.

Remarque

Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_db_partition_stats. Le partition_id sys.dm_pdw_nodes_db_partition_stats diffère de la partition_id dans l’affichage sys.partitions catalogue pour Azure Synapse Analytics. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Nom de la colonne Type de données Description
partition_id bigint ID de la partition. Unique dans la base de données. Il s’agit de la même valeur que dans l’affichage partition_idsys.partitions catalogue, à l’exception d’Azure Synapse Analytics.
object_id int ID d'objet de la table ou de la vue indexée à laquelle appartient la partition.
index_id int ID du segment de mémoire ou de l'index auquel appartient la partition.

0 = Segment de mémoire
1 = Index cluster
> 1 = Index non cluster
partition_number int Numéro de partition (basé sur la valeur 1) au sein de l'index ou du segment de mémoire.
in_row_data_page_count bigint Nombre de pages utilisées pour stocker les données des lignes de cette partition. Si la partition fait partie d'un segment de mémoire, la valeur de cette colonne est le nombre de pages de données dans ce segment. Si la partition fait partie d'un index, la valeur de cette colonne est le nombre de pages au niveau feuille. (Les pages non-feuille dans l’arborescence B+ ne sont pas comprises dans ce nombre). Les pages IAM (Index Allocation Map) ne sont pas incluses dans les deux cas. Toujours 0 pour un index columnstore optimisé en mémoire xVelocity.
in_row_used_page_count bigint Nombre total de pages utilisées pour stocker et gérer les données des lignes de cette partition. Ce nombre comprend les pages non-feuille dans l’arbre B+, les pages IAM et toutes les pages incluses dans la colonne in_row_data_page_count. Toujours 0 pour un index columnstore.
in_row_reserved_page_count bigint Nombre total de pages réservées pour stocker et gérer les données des lignes de cette partition, que les pages soient utilisées ou non. Toujours 0 pour un index columnstore.
lob_used_page_count bigint Nombre de pages utilisées pour stocker et gérer les colonnes hors ligne text, ntext, image, varchar(max), nvarchar(max), varbinary(max) et xml dans la partition. Les pages IAM sont incluses.

Nombre total d'objets LOB utilisés pour stocker et gérer l'index columnstore dans la partition.
lob_reserved_page_count bigint Nombre total de pages réservées pour stocker et gérer les colonnes hors ligne text, ntext, image, varchar(max), nvarchar(max), varbinary(max) et xml dans la partition, que les pages soient utilisées ou non. Les pages IAM sont incluses.

Nombre total d'objets LOB réservés pour le stockage et la gestion d'un index columnstore dans la partition.
row_overflow_used_page_count bigint Nombre de pages utilisées pour stocker et gérer les colonnes en dépassement de capacité des lignes varchar, nvarchar, varbinary et sql_variant de la partition. Les pages IAM sont incluses.

Toujours 0 pour un index columnstore.
row_overflow_reserved_page_count bigint Nombre total de pages réservées pour stocker et gérer les colonnes en dépassement de capacité des lignes varchar, nvarchar, varbinary et sql_variant de la partition, que les pages soient utilisées ou non. Les pages IAM sont incluses.

Toujours 0 pour un index columnstore.
used_page_count bigint Nombre total de pages utilisées pour la partition. Se calcule par la formule : in_row_used_page_count + lob_used_page_count + row_overflow_used_page_count.
reserved_page_count bigint Nombre total de pages réservées pour la partition. Se calcule par la formule : in_row_reserved_page_count + lob_reserved_page_count + row_overflow_reserved_page_count.
row_count bigint Nombre approximatif de lignes dans la partition.
pdw_node_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

Identificateur du nœud sur lequel cette distribution est activée.
distribution_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

ID numérique unique associé à la distribution.

Notes

La sys.dm_db_partition_stats vue de gestion dynamique (DMV) affiche des informations sur l’espace utilisé pour stocker et gérer les données métier de données dans les lignes et les données de dépassement de ligne pour toutes les partitions d’une base de données. Une seule ligne est affichée par partition.

Nombre de sorties basées sur la mémoire ou stockées sur disque dans différentes tables système.

Les données dans la ligne, les données LOB et les données en dépassement de capacité des lignes représentent les trois unités d'allocation qui composent une partition. Il est possible d'effectuer des requêtes dans l'affichage catalogue sys.allocation_units sur les métadonnées de chaque unité d'allocation de la base de données.

Si le segment de mémoire ou l'index n'est pas partitionné, il se compose d'une partition (dont le numéro est égal à 1) ; par conséquent, une seule ligne est renvoyée pour ce segment ou cet index. Il est possible d'effectuer des requêtes dans l'affichage catalogue sys.partitions sur les métadonnées de chaque partition des tables et des index d'une base de données.

Le nombre total pour une table ou un index s'obtient en ajoutant les nombres obtenus pour l'ensemble des partitions concernées.

Autorisations

Nécessite VIEW DATABASE STATE et VIEW DEFINITION autorisations pour interroger la sys.dm_db_partition_stats vue de gestion dynamique. Pour plus d’informations sur les autorisations des vues de gestion dynamique, consultez Fonctions et vues de gestion dynamique (Transact-SQL).

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite les autorisations VIEW DATABASE PERFORMANCE STATE et VIEW SECURITY DEFINITION sur la base de données.

Exemples

R. Retourne tous les nombres pour toutes les partitions de tous les index et segments de mémoire dans une base de données

Le code exemple suivant affiche tous les nombres pour toutes les partitions de tous les index et segments de mémoire de la base de données AdventureWorks2022.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_db_partition_stats;  
GO  

B. Retourne tous les nombres pour toutes les partitions d’une table et de ses index

Le code exemple suivant affiche tous les nombres pour toutes les partitions de la table HumanResources.Employee et de ses index.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_db_partition_stats   
WHERE object_id = OBJECT_ID('HumanResources.Employee');  
GO  

C. Retourner le nombre total de pages utilisées et le nombre total de lignes pour un segment de mémoire ou un index cluster

Le code exemple suivant renvoie le nombre total de pages utilisées et le nombre total de lignes du segment de mémoire ou de l'index cluster de la table HumanResources.Employee. Du fait que la table Employee n'est pas partitionnée par défaut, la somme n'inclut qu'une seule partition.

USE AdventureWorks2022;  
GO  
SELECT SUM(used_page_count) AS total_number_of_used_pages,   
    SUM (row_count) AS total_number_of_rows   
FROM sys.dm_db_partition_stats  
WHERE object_id=OBJECT_ID('HumanResources.Employee')    AND (index_id=0 or index_id=1);  
GO