Udostępnij za pomocą


sys.dm_os_buffer_descriptors (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Zwraca informacje o wszystkich stronach danych, które obecnie znajdują się w puli SQL Server. Wyjście tego widoku może być użyte do określenia rozkładu stron bazy danych w puli bufora według bazy danych, obiektów lub typu. W SQL Server ten dynamiczny widok zarządzania zwraca również informacje o stronach danych w pliku rozszerzenia puli bufora. Więcej informacji można znaleźć w artykule Rozszerzenie puli buforowej.

Gdy strona danych jest odczytywana z dysku, jest kopiowana do puli SQL Server i buforowana do ponownego użycia. Każda strona danych w pamięci podręcznej ma jeden deskryptor bufora. Deskryptory bufora jednoznacznie identyfikują każdą stronę danych, która jest obecnie buforowana w instancji SQL Server. sys.dm_os_buffer_descriptors zwraca strony pamięci podręcznej dla wszystkich baz danych użytkowników i systemu. Dotyczy to stron powiązanych z bazą zasobów (Resource database).

Uwaga / Notatka

Aby wywołać to z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_os_buffer_descriptors. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

Nazwa kolumny Typ danych Description
id_bazy_danych int ID bazy danych powiązanej ze stroną w puli bufora. Jest dopuszczana wartość null.

W usłudze Azure SQL Database wartości są unikatowe w ramach pojedynczej bazy danych lub elastycznej puli, ale nie w obrębie serwera logicznego.
identyfikator_pliku int ID pliku, który przechowuje zachowany obraz strony. Jest dopuszczana wartość null.
page_id int Identyfikator strony w pliku. Jest dopuszczana wartość null.
page_level int Poziom indeksu strony. Jest dopuszczana wartość null.
allocation_unit_id bigint ID jednostki alokacji strony. Ta wartość może być użyta do łączenia sys.allocation_units. Jest dopuszczana wartość null.
page_type nvarchar(60) Typ strony, na przykład: strona danych lub strona indeksowa. Jest dopuszczana wartość null.
row_count int Liczba wierszy na stronie. Jest dopuszczana wartość null.
free_space_in_bytes int Ilość dostępnej wolnej przestrzeni, w bajtach, na stronie. Jest dopuszczana wartość null.
is_modified bit 1 = Strona została zmodyfikowana po odczytaniu z dysku. Jest dopuszczana wartość null.
numa_node int Niejednolity węzeł dostępu do pamięci dla bufora. Jest dopuszczana wartość null.
read_microsec bigint Rzeczywisty czas (w mikrosekundach) potrzebny na odczytanie strony do bufora. Ta liczba jest resetowana przy ponownym użyciu bufora. Jest dopuszczana wartość null.
is_in_bpool_extension bit 1 = Strona znajduje się w rozszerzeniu puli buforowej. Jest dopuszczana wartość null.
pdw_node_id int Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW)

Identyfikator węzła, w ramach którego znajduje się ta dystrybucja.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Uwagi

sys.dm_os_buffer_descriptors zwraca strony używane przez bazę zasobów (Resource database). sys.dm_os_buffer_descriptors nie zwraca informacji o darmowych lub skradzionych stronach ani o stronach, które zawierały błędy podczas czytania.

Źródło To On Relacja
sys.dm_os_buffer_descriptors sys.databases id_bazy_danych 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 identyfikator_pliku wiele do jednego
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration identyfikator_pliku wiele do jednego

Przykłady

A. Zwracanie liczby stron w pamięci podręcznej dla każdej bazy danych

Poniższy przykład zwraca liczbę załadowanych stron 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 w pamięci podręcznej dla każdego obiektu w bieżącej bazie danych

Poniższy przykład zwraca liczbę załadowanych stron dla każdego obiektu w aktualnej 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;  

Zobacz także

sys.allocation_units (Transact-SQL)

Dynamiczne widoki zarządzania związane z systemem operacyjnym PROGRAMU SQL Server (Transact-SQL)
Baza zasobów
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)