sys.dm_db_partition_stats (Transact-SQL)

Restituisce informazioni relative al conteggio di pagine e righe per ogni partizione nel database corrente.

Nome colonna

Tipo di dati

Descrizione

partition_id

bigint

ID della partizione. Valore univoco all'interno di un database. Corrisponde allo stesso valore di partition_id nella vista del catalogo sys.partitions.

object_id

int

ID oggetto della tabella o della vista indicizzata a cui appartiene la partizione.

index_id

int

ID dell'heap o dell'indice a cui appartiene la partizione.

0 = Heap

1 = Indice cluster

partition_number

int

Numero di partizione in base 1 all'interno dell'indice o heap.

in_row_data_page_count

bigint

Numero di pagine utilizzate per l'archiviazione di dati all'interno di righe nella partizione specifica. Se la partizione è inclusa in un heap, il valore corrisponde al numero di pagine di dati nell'heap. Se la partizione è inclusa in un indice, il valore corrisponde al numero di pagine nel livello foglia. Nel conteggio non sono incluse le pagine non foglia nell'albero B. Le pagine IAM (Index Allocation Map, mappa di allocazione degli indici) non sono incluse in entrambi i casi.

in_row_used_page_count

bigint

Numero totale di pagine utilizzate per archiviare e gestire i dati all'interno di righe nella partizione corrente. Questo conteggio include pagine non foglia dell'albero B, pagine IAM e tutte le pagine incluse nella colonna in_row_data_page_count.

in_row_reserved_page_count

bigint

Numero totale di pagine riservate all'archiviazione e gestione dei dati all'interno di righe nella partizione corrente, indipendentemente dal fatto che le pagine siano utilizzate o meno.

lob_used_page_count

bigint

Numero di pagine utilizzate per l'archiviazione e gestione delle colonne all'esterno di righe di tipo text, ntext, image, varchar(max), nvarchar(max), varbinary(max) e xml nella partizione. Le pagine IAM sono incluse.

lob_reserved_page_count

bigint

Numero totale di pagine riservate per l'archiviazione e gestione delle colonne all'esterno di righe di tipo text, ntext, image, varchar(max), nvarchar(max), varbinary(max) e xml nella partizione, indipendentemente dal fatto che le pagine vengano utilizzate o meno. Le pagine IAM sono incluse.

row_overflow_used_page_count

bigint

Numero di pagine utilizzate per l'archiviazione e gestione delle colonne di overflow della riga di tipo varchar, nvarchar, varbinary e sql_variant nella partizione. Le pagine IAM sono incluse.

row_overflow_reserved_page_count

bigint

Numero totale di pagine riservate per l'archiviazione e gestione delle colonne di overflow della riga di tipo varchar, nvarchar, varbinary e sql_variant nella partizione, indipendentemente dal fatto che le pagine vengano utilizzate o meno. Le pagine IAM sono incluse.

used_page_count

bigint

Numero totale di pagine utilizzate per la partizione calcolato come in_row_used_page_count + lob_used_page_count + row_overflow_used_page_count.

reserved_page_count

bigint

Numero totale di pagine riservate per la partizione calcolato come in_row_reserved_page_count + lob_reserved_page_count + row_overflow_reserved_page_count.

row_count

bigint

Numero di righe nella partizione.

Osservazioni

sys.dm_db_partition_stats visualizza informazioni sullo spazio utilizzato per archiviare e gestire i dati LOB di overflow della riga per tutte le partizioni in un database. Viene visualizzata una riga per partizione.

I conteggi su cui si basa l'output vengono inseriti nella cache in memoria oppure archiviati su disco in varie tabelle di sistema.

I dati all'interno di righe, i dati LOB e i dati di overflow della riga rappresentano tre unità di allocazione che compongono una partizione. Per ulteriori informazioni sulle unità di allocazione, vedere Organizzazione di tabelle e indici. È possibile eseguire una query sulla vista del catalogo sys.allocation_units per rilevare i metadati su ciascuna unità di allocazione nel database.

Se un heap o un indice non è partizionato, esso è composto da una partizione (con numero di partizione = 1). Per tale heap o indice viene pertanto restituita solo una riga. Per ulteriori informazioni sulle partizioni, vedere Organizzazione di tabelle e indici. È possibile eseguire una query sulla vista del catalogo sys.partitions per rilevare i metadati su ciascuna partizione di tutte le tabelle e tutti gli indici in un database.

Il conteggio totale relativo a una tabella specifica o un indice specifico può essere ottenuto tramite l'aggiunta dei conteggi per tutte le partizioni rilevanti.

Autorizzazioni

È richiesta l'autorizzazione VIEW DATABASE STATE per eseguire query sulla vista a gestione dinamica sys.dm_db_partition_stats. Per ulteriori informazioni sulle autorizzazioni per le viste a gestione dinamica, vedere Funzioni e viste a gestione dinamica (Transact-SQL).

Esempi

A. Restituzione di tutti i conteggi per tutte le partizioni di tutti gli indici e heap in un database

Nell'esempio seguente vengono visualizzati tutti i conteggi per tutte le partizioni di tutti gli indici e heap nel database AdventureWorks.

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

B. Restituzione di tutti i conteggi per tutte le partizioni di una tabella e dei relativi indici

Nell'esempio seguente vengono visualizzati tutti i conteggi per tutte le partizioni della tabella HumanResources.Employee e dei relativi indici.

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

C. Restituzione del numero totale di pagine utilizzate e del numero totale di righe per un heap o un indice cluster

Nell'esempio seguente vengono restituiti il numero totale di pagine utilizzate e il numero totale di righe per l'heap o l'indice cluster della tabella HumanResources.Employee. Poiché per impostazione predefinita la tabella Employee non è partizionata, la somma include solo una partizione.

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