sys.dm_db_partition_stats (Transact-SQL)
Renvoie le nombre de pages et de lignes de chaque partition de la base de données active.
Nom de la colonne |
Type de données |
Description |
---|---|---|
partition_id |
bigint |
ID de la partition. Unique dans la base de données. Cette valeur est identique à partition_id dans la vue du catalogue sys.partitions |
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 |
partition_number |
int |
Numéro de partition à partir de 1 dans l'index ou le 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 binaire (B-tree) ne sont pas comprises dans ce nombre). Les pages IAM (Index Allocation Map) ne sont jamais incluses. |
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'arborescence binaire (B-tree), les pages IAM et toutes les pages incluses dans la colonne in_row_data_page_count. |
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. |
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. |
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. |
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. |
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. |
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 de lignes dans la partition. |
Notes
sys.dm_db_partition_stats affiche des informations sur l'espace utilisé pour stocker et gérer les données LOB des données dans la ligne et les données en dépassement de capacité des lignes de toutes les partitions d'une base de données. Une seule ligne est affichée par partition.
Les nombres sur lesquels le résultat est basé sont placés en mémoire cache ou stockés sur disque dans diverses 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. Pour plus d'informations sur les unités d'allocation, consultez Organisation des tables et des index. Il est possible d'effectuer des requêtes dans la vue de 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. Pour plus d'informations sur les partitions, consultez Organisation des tables et des index. Il est possible d'effectuer des requêtes dans la vue de 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 l'autorisation VIEW DATABASE STATE pour effectuer une requête dans la vue de gestion dynamique sys.dm_db_partition_stats. Pour plus d'informations relatives aux autorisations sur les vues de gestion dynamique, consultez Fonctions et vues de gestion dynamique (Transact-SQL).
Exemples
A. Renvoie de tous les nombres pour toutes les partitions de tous les index et segments de mémoire d'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 AdventureWorks.
USE AdventureWorks;
GO
SELECT * FROM sys.dm_db_partition_stats;
GO
B. Renvoie de 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 AdventureWorks;
GO
SELECT * FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('HumanResources.Employee');
GO
C. Renvoie du nombre total de pages utilisées et du nombre total de lignes d'un segment de mémoire ou d'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 AdventureWorks;
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
Voir aussi