sys.dm_os_buffer_descriptors (Transact-SQL)
Zwraca informacje o wszystkich stron danych, które są aktualnie w SQL Server pula buforów. Dane wyjściowe w tym widoku można wyznaczyć rozkład uzyskanych stron bazy danych w pula buforów zgodnie z bazą danych, obiektu lub typu.
strona danych jest odczytywany z dysku, strona są kopiowane do SQL Server pula buforów i do ponownego użycia w pamięci podręcznej. Każda Strona buforowanych danych ma jeden buforu deskryptora.Buffer descriptors uniquely identify each data page that is currently cached in an instance of SQL Server.sys.dm_os_buffer_descriptors returns cached pages for all user and system databases.Dotyczy to stron, które są skojarzone z bazy danych zasób.
Nazwa kolumna |
Typ danych |
Description |
---|---|---|
database_id |
int |
Identyfikator bazy danych skojarzonej z strona w pula buforów.Jest pustych. |
file_id |
int |
Identyfikator pliku, w którym przechowywane są trwałe obraz strona.Czy zerowalne |
page_id |
int |
Identyfikator strona w pliku.Jest pustych. |
page_level |
int |
Poziom indeksu strona.Czy zerowalne |
allocation_unit_id |
bigint |
Identyfikator jednostka alokacji strona.Ta wartość może być używana do przyłączenia sys.allocation_units.Jest pustych. Uwagasys.dm_os_buffer_descriptors może pokazać wartości nieistniejącej w allocation_unit_id dla indeksów klastrowanych, które zostały utworzone w wersjach SQL Server starsze niż SQL Server 2005. |
page_type |
nvarchar(60) |
Wpisz strona, na przykład: Strony danych lub strona indeksu. Jest pustych.Aby uzyskać więcej informacji zobaczOpis stron i zakresów. |
row_count |
int |
Liczba wierszy strona.Jest pustych. |
free_space_in_bytes |
int |
Ilość dostępnego wolnego miejsca, w bajtach, strona.Jest pustych. |
is_modified |
bit |
1 = Strona została zmodyfikowana po odczytu z dysku.Jest pustych. |
numa_mode |
int |
Węzeł typu dostępu do pamięci dla buforu. |
Uprawnienia
Wymaga uprawnienia VIEW SERVER STATE na serwerze.
Remarks
sys.dm_os_buffer_descriptors returns pages that are being used by the Resource database.sys.dm_os_buffer_descriptors does not return information about free or stolen pages, or about pages that had errors when they were read.
Z |
Aby |
Na |
Relacja |
---|---|---|---|
sys.dm_os_buffer_descriptors |
sys.Databases |
database_id |
wiele do jednego |
sys.dm_os_buffer_descriptors |
<userdb>. sys.allocation_units |
allocation_unit_id |
wiele do jednego |
sys.dm_os_buffer_descriptors |
<userdb>. sys.database_files |
file_id |
wiele do jednego |
Przykłady
A.Zwraca buforowane strona licznika dla każdej bazy danych
W poniższym przykładzie zwraca liczbę stron załadowanych dla każdej bazy danych.
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.Zwracanie liczby stron pamięci podręcznej dla każdego obiektu w bieżącej bazie danych
W poniższym przykładzie zwraca liczbę stron ładowany dla każdego obiektu w bieżącej bazie danych.
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;