Udostępnij za pośrednictwem


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;