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

> 1 = Index non-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 approximatif 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 AdventureWorks2008R2.

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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