sys.dm_db_partition_stats (Transact-SQL)

Gibt Informationen zu Seiten- und Zeilenzahlen für jede Partition in der aktuellen Datenbank zurück.

Spaltenname

Datentyp

Beschreibung

partition_id

bigint

Die ID der Partition. Sie ist innerhalb einer Datenbank eindeutig. Dieser Wert ist identisch mit dem partition_id-Wert in der sys.partitions-Katalogsicht.

object_id

int

Objekt-ID der Tabelle oder der indizierten Sicht, in der die Partition enthalten ist.

index_id

int

ID des Heaps oder Indexes, in dem die Partition enthalten ist.

0 = Heap

1 = Gruppierter Index

> 1 = Nicht gruppierter Index

partition_number

int

Auf 1 basierende Partitionsnummer im Index oder Heap.

in_row_data_page_count

bigint

Anzahl der Seiten, die zum Speichern von Daten innerhalb einer Zeile dieser Partition verwendet werden. Falls die Partition Teil eines Heaps ist, gibt der Wert die Anzahl von Datenseiten im Heap an. Falls die Partition Teil eines Indexes ist, gibt der Wert die Anzahl der Seiten auf Blattebene an. (Seiten des inneren Blatts in der B-Struktur sind in der Zählung nicht enthalten.) IAM-Seiten (Index Allocation Map) sind in beiden Fällen nicht enthalten.

in_row_used_page_count

bigint

Gesamtanzahl der Seiten, die zum Speichern und Verwalten der Daten in Zeilen in dieser Partition verwendet werden. Die Zahl schließt Seiten des inneren Blatts in der B-Struktur, IAM-Seiten und alle Seiten ein, die in der in_row_data_page_count-Spalte enthalten sind.

in_row_reserved_page_count

bigint

Gesamtanzahl der Seiten, die zum Speichern und Verwalten der Daten in Zeilen in dieser Partition reserviert sind, unabhängig davon, ob die Seiten verwendet werden.

lob_used_page_count

bigint

Anzahl der Seiten, die zum Speichern und Verwalten von Spalten vom Typ text, ntext, image, varchar(max), nvarchar(max), varbinary(max) und xml außerhalb von Zeilen in der Partition verwendet werden. IAM-Seiten sind eingeschlossen.

lob_reserved_page_count

bigint

Gesamtanzahl der Seiten, die zum Speichern und Verwalten von Spalten vom Typ text, ntext, image, varchar(max), nvarchar(max), varbinary(max) und xml außerhalb von Zeilen in der Partition reserviert sind, unabhängig davon, ob die Seiten verwendet werden. IAM-Seiten sind eingeschlossen.

row_overflow_used_page_count

bigint

Anzahl der Seiten, die zum Speichern und Verwalten von Zeilenüberlaufspalten vom Typ varchar, nvarchar, varbinary und sql_variant in der Partition verwendet werden. IAM-Seiten sind eingeschlossen.

row_overflow_reserved_page_count

bigint

Gesamtanzahl der Seiten, die zum Speichern und Verwalten von Zeilenüberlaufspalten vom Typ varchar, nvarchar, varbinary und sql_variant in der Partition reserviert sind, unabhängig davon, ob die Seiten verwendet werden. IAM-Seiten sind eingeschlossen.

used_page_count

bigint

Gesamtanzahl der für die Partition verwendeten Seiten. Diese Zahl wird wie folgt berechnet: in_row_used_page_count + lob_used_page_count + row_overflow_used_page_count.

reserved_page_count

bigint

Gesamtanzahl der für die Partition reservierten Seiten. Diese Zahl wird wie folgt berechnet: in_row_reserved_page_count + lob_reserved_page_count + row_overflow_reserved_page_count.

row_count

bigint

Die ungefähre Anzahl der Zeilen in der Partition.

Hinweise

sys.dm_db_partition_stats zeigt Informationen zu dem Bereich an, der zum Speichern und Verwalten von LOB-Daten in Zeilen und von Zeilenüberlaufdaten für alle Partitionen in einer Datenbank verwendet wird. Es wird eine Zeile pro Partition angezeigt.

Die Zahlen, auf denen die Ausgabe basiert, werden im Arbeitsspeicher zwischengespeichert oder auf einem Datenträger in unterschiedlichen Systemtabellen gespeichert.

In Zeilen gespeicherte Daten, LOB-Daten und Zeilenüberlaufdaten stellen die drei Zuordnungseinheiten dar, aus denen eine Partition besteht. Weitere Informationen zu Zuordnungseinheiten finden Sie unter Organisationsstruktur von Tabellen und Indizes. Die sys.allocation_units-Katalogsicht kann für Metadaten zu jeder Zuordnungseinheit in der Datenbank abgefragt werden.

Falls ein Heap oder Index nicht partitioniert ist, besteht er aus einer Partition (mit der Partitionsnummer = 1). Daher wird nur eine Zeile für diesen Heap oder Index zurückgegeben. Weitere Informationen zu Partitionen finden Sie unter Organisationsstruktur von Tabellen und Indizes. Die sys.partitions-Katalogsicht kann für Metadaten zu jeder Partition aller Tabellen und Indizes in einer Datenbank abgefragt werden.

Die Gesamtanzahl für eine einzelne Tabelle oder einen Index kann durch das Addieren der Zahlen für alle relevanten Partitionen bestimmt werden.

Berechtigungen

Erfordert die VIEW DATABASE STATE-Berechtigung zum Abfragen der dynamischen Verwaltungssicht sys.dm_db_partition_stats. Weitere Informationen zu Berechtigungen für dynamische Verwaltungssichten finden Sie unter Dynamische Verwaltungssichten und Funktionen (Transact-SQL).

Beispiele

A. Zurückgeben aller Zahlen für alle Partitionen von allen Indizes und Heaps in einer Datenbank

Im folgenden Beispiel werden alle Zahlen für alle Partitionen von allen Indizes und Heaps in der AdventureWorks2008R2-Datenbank angezeigt.

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

B. Zurückgeben aller Zahlen für alle Partitionen einer Tabelle und ihrer Indizes

Im folgenden Beispiel werden alle Zahlen aller Partitionen der HumanResources.Employee-Tabelle und ihrer Indizes angezeigt.

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

C. Zurückgeben der insgesamt verwendeten Seiten und der Gesamtanzahl der Zeilen für einen Heap oder gruppierten Index

Im folgenden Beispiel werden Angaben zu den insgesamt verwendeten Seiten und zur Gesamtanzahl der Zeilen für den Heap oder gruppierten Index der HumanResources.Employee-Tabelle zurückgegeben. Da die Employee-Tabelle standardmäßig nicht partitioniert ist, umfasst die Summe nur eine 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