sys.dm_os_buffer_descriptors (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Returnerar information om alla datasidor som för närvarande finns i SQL Server-buffertpoolen. Utdata från denna vy kan användas för att bestämma fördelningen av databassidor i buffertpoolen enligt databas, objekt eller typ. I SQL Server returnerar denna dynamiska hanteringsvy också information om datasidorna i bufferpoolens tilläggsfil. För mer information, se Buffer Pool Extension.

När en datasida läses från disken kopieras sidan till SQL Server-buffertpoolen och cachas för återanvändning. Varje cachad datasida har en buffertbeskrivare. Buffertbeskrivare identifierar unikt varje datasida som för närvarande är cachad i en instans av SQL Server. sys.dm_os_buffer_descriptors returnerar cachade sidor för alla användar- och systemdatabaser. Detta inkluderar sidor som är kopplade till resursdatabasen.

Anmärkning

För att kalla detta från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_os_buffer_descriptors. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Kolumnnamn Datatyp Description
database_id int ID för databasen kopplad till sidan i buffertpoolen. Kan inte vara null.

I Azure SQL Database är värdena unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.
file_id int ID för filen som lagrar den bevarade bilden av sidan. Kan inte vara null.
page_id int ID för sidan i filen. Kan inte vara null.
page_level int Indexnivå på sidan. Kan inte vara null.
allocation_unit_id bigint ID för sidans allokeringsenhet. Detta värde kan användas för att ansluta sys.allocation_units. Kan inte vara null.
page_type nvarchar(60) Typ av sida, såsom: Datasida eller Indexsida. Kan inte vara null.
row_count int Antal rader på sidan. Kan inte vara null.
free_space_in_bytes int Mängden tillgängligt ledigt utrymme, i bytes, på sidan. Kan inte vara null.
is_modified bit 1 = Sidan har ändrats efter att den lästs från disken. Kan inte vara null.
numa_node int Nod för icke-uniform minnesåtkomst för bufferten. Kan inte vara null.
read_microsec bigint Den faktiska tiden (i mikrosekunder) som krävs för att läsa sidan i bufferten. Detta nummer återställs när bufferten återanvänds. Kan inte vara null.
is_in_bpool_extension bit 1 = Sidan är i buffer pool-tillägget. Kan inte vara null.
pdw_node_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifieraren för noden som den här fördelningen är på.

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Anmärkningar

sys.dm_os_buffer_descriptors returnerar sidor som används av resursdatabasen. sys.dm_os_buffer_descriptors returnerar inte information om gratis eller stulna sidor, eller om sidor som hade fel när de lästes.

Från Till On Förhållande
sys.dm_os_buffer_descriptors sys.databases database_id många-till-en
sys.dm_os_buffer_descriptors <userdb>.sys.allocation_units allocation_unit_id många-till-en
sys.dm_os_buffer_descriptors <userdb>.sys.database_files file_id många-till-en
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration file_id många-till-en

Examples

A. Returnerar cachad sidräkning för varje databas

Följande exempel visar antalet sidor som laddats för varje databas.

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. Returnerar cachad sidräkning för varje objekt i den aktuella databasen

Följande exempel återger antalet sidor som laddats för varje objekt i den aktuella databasen.

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;  

Se även

sys.allocation_units (Transact-SQL)

SQL Server-operativsystemrelaterade dynamiska hanteringsvyer (Transact-SQL)
Resursdatabas
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)