sys.dm_os_buffer_descriptors (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

Geeft informatie terug over alle datapagina's die momenteel in de SQL Server-bufferpool staan. De output van deze weergave kan worden gebruikt om de verdeling van databasepagina's in de bufferpool te bepalen volgens database, object of type. In SQL Server geeft deze dynamische beheerweergave ook informatie terug over de datapagina's in het bufferpool-extensiebestand. Voor meer informatie, zie Buffer Pool Extension.

Wanneer een datapagina van de schijf wordt gelezen, wordt de pagina gekopieerd naar de SQL Server-bufferpool en gecachet voor hergebruik. Elke gecachte datapagina heeft één bufferdescriptor. Bufferdescriptors identificeren uniek elke datapagina die momenteel in een instantie van SQL Server is gecached. sys.dm_os_buffer_descriptors levert gecachte pagina's terug voor alle gebruikers- en systeemdatabases. Dit omvat pagina's die gekoppeld zijn aan de Resource-database.

Note

Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_os_buffer_descriptors. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Kolomnaam Gegevenstype Beschrijving
database_id int ID van de database die aan de pagina in de bufferpool is gekoppeld. Kan null-waarden bevatten.

In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server.
file_id int ID van het bestand dat de behouden afbeelding van de pagina opslaat. Kan null-waarden bevatten.
page_id int ID van de pagina binnen het bestand. Kan null-waarden bevatten.
paginaniveau int Indexniveau van de pagina. Kan null-waarden bevatten.
allocation_unit_id bigint ID van de toewijzingseenheid van de pagina. Deze waarde kan worden gebruikt om sys.allocation_units te joinen. Kan null-waarden bevatten.
page_type nvarchar(60) Type pagina, zoals: Datapagina of Indexpagina. Kan null-waarden bevatten.
rijaantal int Aantal rijen op de pagina. Kan null-waarden bevatten.
free_space_in_bytes int Hoeveelheid beschikbare vrije ruimte, in bytes, op de pagina. Kan null-waarden bevatten.
is_modified bit 1 = Pagina is aangepast nadat deze van de schijf is gelezen. Kan null-waarden bevatten.
numa_node int Nonuniform Memory Access-knooppunt voor de buffer. Kan null-waarden bevatten.
read_microsec bigint De werkelijke tijd (in microseconden) die nodig is om de pagina in de buffer te lezen. Dit nummer wordt gereset wanneer de buffer opnieuw wordt gebruikt. Kan null-waarden bevatten.
is_in_bpool_extension bit 1 = De pagina bevindt zich in de bufferpool-extensie. Kan null-waarden bevatten.
pdw_node_id int van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW)

De id voor het knooppunt waarop deze distributie zich bevindt.

Permissions

Voor SQL Server en SQL Managed Instance is VIEW SERVER STATE machtiging vereist.

Op SQL Database Basic, S0en S1 servicedoelstellingen, en voor databases in elastische pools, is het serverbeheerder--account, het Microsoft Entra-beheerdersaccount of lidmaatschap van de ##MS_ServerStateReader##-server functie vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader##-serverfunctie vereist.

Machtigingen voor SQL Server 2022 en hoger

Vereist VIEW SERVER PERFORMANCE STATE toestemming op de server.

Opmerkingen

sys.dm_os_buffer_descriptors levert pagina's terug die door de Resource-database worden gebruikt. sys.dm_os_buffer_descriptors geeft geen informatie terug over gratis of gestolen pagina's, of over pagina's die fouten hadden bij het lezen.

Van Tot On Relationship
sys.dm_os_buffer_descriptors sys.databases database_id veel-op-een
sys.dm_os_buffer_descriptors <userdb>.sys.allocation_units allocation_unit_id veel-op-een
sys.dm_os_buffer_descriptors <userdb>.sys.database_files file_id veel-op-een
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration file_id veel-op-een

Examples

A. Het teruggeven van gecachet paginatelling voor elke database

Het volgende voorbeeld geeft het aantal geladen pagina's voor elke database terug.

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. Het teruggeven van gecachete paginatelling voor elk object in de huidige database

Het volgende voorbeeld geeft het aantal geladen pagina's voor elk object in de huidige database terug.

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;  

Zie ook

sys.allocation_units (Transact-SQL)

Dynamische beheerweergaven van SQL Server-besturingssysteem (Transact-SQL)
Bronnendatabase
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)