sys.dm_os_buffer_descriptors (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Információt ad vissza az összes jelenleg az SQL Server puffermedben lévő adatlapról. Ennek a nézetnek a kimenete segítségével meghatározható az adatbázis oldalak eloszlása a puffermedencében adatbázis, objektum vagy típus szerint. Az SQL Serverben ez a dinamikus menedzsment nézet a buffer pool kiterjesztésfájlban található adatoldalakról is visszaad információt. További információért lásd: Buffer Pool Extension.

Amikor egy adatlapot olvasnak a lemezről, az oldalt az SQL Server pufferkészletébe másolják, és újrahasznosításra gyorsatározzák őket. Minden gyorsítótározott adatlapnak van egy pufferleírója. A pufferleírók egyedileg azonosítják az egyes adatoldalakat, amelyek jelenleg egy SQL Server példányban van gyorsatárázva. sys.dm_os_buffer_descriptors minden felhasználói és rendszeradatbázis számára gyorsítótározott oldalakat ad. Ez magában foglalja azokat az oldalakat is, amelyek az Erőforrás adatbázishoz kapcsolódnak.

Feljegyzés

Az Azure Synapse Analytics vagy Analytics Platform System (PDW) néven használjuk a sys.dm_pdw_nodes_os_buffer_descriptors nevet. Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Oszlop neve Adattípus Leírás
database_id int Az oldalhoz tartozó adatbázis azonosítója a puffermedencében. Null értékű.

Az Azure SQL Database-ben az értékek egyediek egyetlen adatbázisban vagy rugalmas készletben, de nem logikai kiszolgálón belül.
fájl_azonosító int Az oldal tartós képét tároló fájl azonosítója. Null értékű.
page_id int Az oldal azonosítója a fájlban. Null értékű.
oldalszint int Az oldal index szintje. Null értékű.
allocation_unit_id bigint Az oldal allokációs egységének azonosítója. Ez az érték felhasználható sys.allocation_units összekapcsolására. Null értékű.
oldal_típus nvarchar(60) Az oldal típusa, például: Adatlapot vagy Indexoldalt. Null értékű.
row_count int A sor száma az oldalon. Null értékű.
free_space_in_bytes int Az oldalon elérhető szabad hely mennyisége, bájtokban. Null értékű.
is_modified bit 1 = Az oldalt módosították, miután felolvasták a lemezről. Null értékű.
numa_node int Nem egységes memória hozzáférés csomópont a pufferhez. Null értékű.
read_microsec bigint Az a tényleges idő (mikroszekundumokban), ami az oldal pufferbe való felolvasásához szükséges. Ez a szám akkor nullálódik, amikor a puffert újra felhasználjuk. Null értékű.
is_in_bpool_extension bit 1 = Az oldal a buffer pool kiterjesztésben van. Null értékű.
pdw_node_id int A következővonatkozik: Azure Synapse Analytics, Analytics Platform System (PDW)

Annak a csomópontnak az azonosítója, amelyen ez a disztribúció található.

Permissions

Az SQL Serveren és a felügyelt SQL-példányon VIEW SERVER STATE engedély szükséges.

Az SQL Database Alapszintű, S0és S1 szolgáltatás célkitűzésein, valamint rugalmas készletekbenlévő adatbázisok esetében a kiszolgálói rendszergazdai fiókra, a Microsoft Entra rendszergazdai fiókra vagy a ##MS_ServerStateReader##kiszolgálói szerepkör tagságára van szükség. Az SQL Database szolgáltatás minden más célkitűzéséhez vagy az adatbázis VIEW DATABASE STATE engedélyére, vagy a ##MS_ServerStateReader## kiszolgálói szerepkör tagságára van szükség.

Engedélyek az SQL Server 2022-hez és újabb verziókhoz

SERVER PERFORMANCE STATE engedélyt igényel VIEW a szerveren.

Megjegyzések

sys.dm_os_buffer_descriptors olyan oldalakat ad vissza, amelyeket az Erőforrás-adatbázis használ. sys.dm_os_buffer_descriptors nem küld vissza információkat ingyenes vagy ellopott oldalakról, illetve olyan oldalakról, amelyekben hibák voltak olvasáskor.

Forrás Címzett Bekapcsolva Relationship
sys.dm_os_buffer_descriptors sys.databases database_id több az egyhez
sys.dm_os_buffer_descriptors <userdb>.sys.allocation_units allocation_unit_id több az egyhez
sys.dm_os_buffer_descriptors <userdb>.sys.database_files fájl_azonosító több az egyhez
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration fájl_azonosító több az egyhez

Examples

A. Minden adatbázishoz vissza a gyorsítótározott oldalszám

A következő példa adja vissza az adatbázisokhoz betöltött oldalak számát.

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. A jelenlegi adatbázis minden objektumának gyorsítótározott oldalszámának visszaállítása

A következő példa adja vissza az aktuális adatbázis minden objektumához betöltött oldalak számát.

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;