sys.dm_os_buffer_descriptors (Transact-SQL)
Gibt Informationen zu allen Datenseiten zurück, die derzeit im SQL Server-Pufferpool sind. Die Ausgabe dieser Sicht kann verwendet werden, um die Verteilung der Datenbankseiten im Pufferpool gemäß der Datenbank, des Objekts oder des Typs zu bestimmen.
Beim Lesen einer Datenseite vom Datenträger wird die Seite in den SQL Server-Pufferpool kopiert und für die Wiederverwendung zwischengespeichert. Jede zwischengespeicherte Datenseite verfügt über einen Pufferdeskriptor. Pufferdeskriptoren identifizieren jede Datenseite eindeutig, die derzeit in einer Instanz von SQL Server zwischengespeichert ist. sys.dm_os_buffer_descriptors gibt zwischengespeicherte Seiten für alle Benutzer- und Systemdatenbanken zurück. Dazu zählen auch Seiten, die der Resource-Datenbank zugeordnet sind.
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
database_id |
int |
ID der Datenbank, die der Seite im Pufferpool zugeordnet ist. Lässt NULL-Werte zu. |
file_id |
int |
ID der Datei, die das persistente Image der Seite speichert. Lässt NULL-Werte zu. |
page_id |
int |
ID der Seite innerhalb der Datei. Lässt NULL-Werte zu. |
page_level |
int |
Indexebene der Seite. Lässt NULL-Werte zu. |
allocation_unit_id |
bigint |
ID der Zuordnungseinheit der Seite. Dieser Wert kann für den Join von sys.allocation_units verwendet werden. Lässt NULL-Werte zu. Hinweis sys.dm_os_buffer_descriptors zeigt möglicherweise nicht vorhandene Werte in allocation_unit_id für gruppierte Indizes an, die in Versionen von SQL Server vor SQL Server 2005 erstellt wurden. |
page_type |
nvarchar(60) |
Typ der Seite, z. B. Datenseite oder Indexseite. Lässt NULL-Werte zu. |
row_count |
int |
Anzahl der Zeilen auf der Seite. Lässt NULL-Werte zu. |
free_space_in_bytes |
int |
Umfang des verfügbaren Speicherplatzes auf der Seite (in Byte). Lässt NULL-Werte zu. |
is_modified |
bit |
1 = Seite wurde nach dem Lesen vom Datenträger geändert. Lässt NULL-Werte zu. |
numa_node |
int |
NUMA-Knoten (Non-Uniform Memory Access) für den Puffer. Lässt NULL-Werte zu. |
read_microsec |
bigint |
Die tatsächliche Zeit (in Mikrosekunden), die erforderlich ist, um die Seite in den Puffer einzulesen. Diese Zahl wird zurückgesetzt, wenn der Puffer wiederverwendet wird. Lässt NULL-Werte zu. |
Berechtigungen
Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.
Hinweise
sys.dm_os_buffer_descriptors gibt Seiten zurück, die von der Resource-Datenbank verwendet werden. sys.dm_os_buffer_descriptors gibt keine Informationen über freie oder gestohlene Seite oder über Seiten zurück, die beim Lesen Fehler aufwiesen.
Von |
Für |
In |
Beziehung |
---|---|---|---|
sys.dm_os_buffer_descriptors |
sys.databases |
database_id |
n:1 |
sys.dm_os_buffer_descriptors |
<userdb>.sys.allocation_units |
allocation_unit_id |
n:1 |
sys.dm_os_buffer_descriptors |
<userdb>.sys.database_files |
file_id |
n:1 |
Beispiele
A.Zurückgeben der zwischengespeicherten Seitenanzahl für jede Datenbank
Im folgenden Beispiel wird die für jede Datenbank geladene Seitenanzahl zurückgegeben.
SELECT COUNT(*)AS cached_pages_count
,CASE database_id
WHEN 32767 THEN 'ResourceDb'
ELSE db_name(database_id)
END AS database_name
FROM sys.dm_os_buffer_descriptors
GROUP BY db_name(database_id) ,database_id
ORDER BY cached_pages_count DESC;
B.Zurückgeben der zwischengespeicherten Seitenanzahl für jedes Objekt in der aktuellen Datenbank
Im folgenden Beispiel wird die für jedes Objekt in der aktuellen Datenbank geladene Seitenanzahl zurückgegeben.
SELECT COUNT(*)AS cached_pages_count
,name ,index_id
FROM sys.dm_os_buffer_descriptors AS bd
INNER JOIN
(
SELECT object_name(object_id) AS name
,index_id ,allocation_unit_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.hobt_id
AND (au.type = 1 OR au.type = 3)
UNION ALL
SELECT object_name(object_id) AS name
,index_id, allocation_unit_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.partition_id
AND au.type = 2
) AS obj
ON bd.allocation_unit_id = obj.allocation_unit_id
WHERE database_id = db_id()
GROUP BY name, index_id
ORDER BY cached_pages_count DESC;
Siehe auch
Verweis
sys.allocation_units (Transact-SQL)
Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Dynamische Verwaltungssichten in Verbindung mit dem SQL Server-Betriebssystem (Transact-SQL)