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ů.

Note

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. Může obsahovat hodnotu null.

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. Může obsahovat hodnotu null.
page_id int ID stránky uvnitř souboru. Může obsahovat hodnotu null.
úroveň stránky int Indexová úroveň stránky. Může obsahovat hodnotu null.
allocation_unit_id bigint ID alokační jednotky stránky. Tato hodnota může být použita k propojení sys.allocation_units. Může obsahovat hodnotu null.
typ_stránky nvarchar(60) Typ stránky, například: Datová stránka nebo Indexová stránka. Může obsahovat hodnotu null.
row_count int Počet řádků na stránce. Může obsahovat hodnotu null.
free_space_in_bytes int Množství volného místa v bajtech na stránce. Může obsahovat hodnotu null.
is_modified bit 1 = Stránka byla upravena po přečtení z disku. Může obsahovat hodnotu null.
numa_node int Neuniformní uzel pro přístup k paměti pro buffer. Může obsahovat hodnotu null.
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. Může obsahovat hodnotu null.
is_in_bpool_extension bit 1 = Stránka je v rozšíření buffer poolu. Může obsahovat hodnotu null.
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 spravované instanci SQL vyžaduje VIEW SERVER STATE oprávnění.

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

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

Vyžaduje VIEW oprávnění SERVER PERFORMANCE STATE 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 Na Relationship
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)