Sdílet prostřednictvím


sys.dm_os_buffer_descriptors (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrací informace o všech datových stránkách, které jsou aktuálně v SQL Server buffer poolu. Výstup tohoto pohledu lze použít k určení rozložení databázových stránek v bufferovém poolu podle databáze, objektu nebo typu. V SQL Serveru tento dynamický pohled správy také vrací informace o datových stránkách v souboru rozšíření buffer poolu. Pro více informací viz Rozšíření buffer poolu.

Když je datová stránka čtena z disku, je zkopírována do bufferového poolu SQL Serveru a uložena do cache pro opětovné použití. Každá stránka uložených dat má jeden bufferový deskriptor. Buffer descriptory jednoznačně identifikují každou datovou stránku, která je aktuálně uložena v jedné instanci SQL Serveru. sys.dm_os_buffer_descriptors vrací cacheované stránky pro všechny uživatelské a systémové databáze. To zahrnuje stránky spojené s databází zdrojů.

Poznámka:

Pro volání z Azure Synapse Analytics nebo Analytics Platform System (PDW) použijte název sys.dm_pdw_nodes_os_buffer_descriptors. Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Název sloupce Datový typ Description
database_id int ID databáze spojené se stránkou v buffer poolu. Je nullable.

Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru.
ID souboru int ID souboru, který ukládá zachovaný obraz stránky. Je nullable.
page_id int ID stránky uvnitř souboru. Je nullable.
page_level int Indexová úroveň stránky. Je nullable.
allocation_unit_id bigint ID alokační jednotky stránky. Tato hodnota může být použita k propojení sys.allocation_units. Je nullable.
page_type nvarchar(60) Typ stránky, například: Datová stránka nebo Indexová stránka. Je nullable.
row_count int Počet řádků na stránce. Je nullable.
free_space_in_bytes int Množství volného místa v bajtech na stránce. Je nullable.
is_modified bit 1 = Stránka byla upravena po přečtení z disku. Je nullable.
numa_node int Neuniformní uzel pro přístup k paměti pro buffer. Je nullable.
read_microsec bigint Skutečný čas (v mikrosekundách) potřebný k načtení stránky do bufferu. Toto číslo se resetuje při opětovném použití bufferu. Je nullable.
is_in_bpool_extension bit 1 = Stránka je v rozšíření buffer poolu. Je nullable.
pdw_node_id int platí pro: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifikátor uzlu, na který je tato distribuce zapnutá.

Povolení

Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Poznámky

sys.dm_os_buffer_descriptors vrací stránky, které jsou využívány databází zdrojů. sys.dm_os_buffer_descriptors nevrací informace o volně volných nebo ukradených stránkách, ani o stránkách, které měly chyby při jejich čtení.

Od To On Vztah
sys.dm_os_buffer_descriptors sys.databases database_id M:1
sys.dm_os_buffer_descriptors <userdb>.sys.allocation_units allocation_unit_id M:1
sys.dm_os_buffer_descriptors <userdb>.sys.database_files ID souboru M:1
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration ID souboru M:1

Examples

A. Vrácení počtu stránek v cache pro každou databázi

Následující příklad vrací počet načtených stránek pro každou databázi.

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. Vrácení počtu stránek v cache pro každý objekt v aktuální databázi

Následující příklad vrací počet načtených stránek pro každý objekt v aktuální databázi.

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;  

Viz také

sys.allocation_units (Transact-SQL)

Zobrazení dynamické správy související s operačním systémem SQL Server (Transact-SQL)
Databáze zdrojů
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)