Udostępnij za pośrednictwem


sys.dm_os_buffer_descriptors (języka Transact-SQL)

Zwraca informacje o wszystkich stron danych, które są aktualnie w SQL Server pula buforów.Dane wyjściowe tego widoku może służyć do określenia dystrybucji stron bazy danych w pula buforów zgodnie z bazy danych, obiektu lub typu.

Podczas odczytywania danych strona z dysku, strona zostanie wstawiona SQL Server pula buforów i buforowane dla ponownego użycia.Każda buforowane strona ma jeden deskryptor buforu.Deskryptory buforu jednoznacznej identyfikacji każdego danych strona , która jest aktualnie w pamięci podręcznej w wystąpienie SQL Server.sys.dm_os_buffer_descriptorsZwraca buforowane strony dla wszystkich użytkowników i bazy danych systemu.Dotyczy to stron, które są skojarzone z Resource bazy danych.

Nazwa kolumny

Typ danych

Opis

database_id

int

Identyfikator bazy danych skojarzonej z strona w pula buforów.Jest nullable.

file_id

int

Identyfikator pliku, który przechowuje obraz utrwalonej strona.Jest nullable

page_id

int

Identyfikator strona w pliku.Jest nullable.

page_level

int

Indeks poziom strona.Jest nullable

allocation_unit_id

bigint

Identyfikator jednostka alokacji strona.Ta wartość może służyć do łączyć sys.allocation_units.Jest nullable.

 Uwaga    sys.dm_os_buffer_descriptorsmoże pokazać nieistniejącej wartości 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)

Typ strona, takie jak: Dane strona lub stronaindeksu.Jest nullable.Aby uzyskać więcej informacji, zobacz Opis stron i zakresów.

row_count

int

Liczba wierszy na strona.Jest nullable.

free_space_in_bytes

int

Ilość dostępnego wolnego miejsca, w bajtach, na strona.Jest nullable.

is_modified

bit

1 = Strona została zmodyfikowana po odczytu z dysku.Jest nullable.

numa_mode

int

Węzeł niejednorodnej dostęp do pamięci dla buforu.

Uprawnienia

Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.

Uwagi

sys.dm_os_buffer_descriptorsZwraca strony, które są używane przez Resource bazy danych.sys.dm_os_buffer_descriptorsZwraca informacje o wolne lub skradzionych strony lub stron, które wystąpiły błędy podczas zostały odczytane.

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.Zwracanie liczba buforowanych strona dla każdej bazy danych

Poniższy przykład zwraca liczbę stron ładowany 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 liczba buforowanych strona dla każdego obiektu w bieżącej bazie danych

Poniższy przykład 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;