sys.dm_os_buffer_descriptors (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Database SQL in Microsoft Fabric

Restituisce informazioni su tutte le pagine di dati attualmente presenti nel pool di buffer di SQL Server. L'output di questa vista può essere utilizzato per determinare la distribuzione delle pagine del database nel pool di buffer in base al database, all'oggetto o al tipo. In SQL Server questa vista a gestione dinamica restituisce anche informazioni sulle pagine di dati nel file di estensione del pool di buffer. Per altre informazioni, vedere Estensione pool di buffer.

Quando una pagina dati viene letta dal disco, la pagina viene copiata nel pool di buffer di SQL Server e memorizzata nella cache per il riutilizzo. Ogni pagina di dati memorizzata nella cache è associata a un descrittore di buffer. I descrittori di buffer identificano in modo univoco ogni pagina di dati attualmente memorizzata nella cache in un'istanza di SQL Server. sys.dm_os_buffer_descriptors restituisce le pagine memorizzate nella cache per tutti i database utente e di sistema. incluse le pagine associate al database Resource.

Note

Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_os_buffer_descriptors. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Nome della colonna Tipo di dati Descrzione
database_id int ID del database associato alla pagina nel pool di buffer. È annullabile.

In database SQL di Azure i valori sono univoci all'interno di un database singolo o di un pool elastico, ma non all'interno di un server logico.
ID del file int ID del file in cui è archiviata l'immagine persistente della pagina. È annullabile.
page_id int ID della pagina all'interno del file. È annullabile.
page_level int Livello di indice della pagina. È annullabile.
allocation_unit_id bigint ID dell'unità di allocazione della pagina. Questo valore può essere utilizzato per unire in join sys.allocation_units. È annullabile.
page_type nvarchar(60) Tipo di pagina, ad esempio pagina di dati o pagina di indice. È annullabile.
row_count int Numero di righe nella pagina. È annullabile.
free_space_in_bytes int Quantità di spazio disponibile, in byte, nella pagina. È annullabile.
is_modified bit 1 = La pagina è stata modificata dopo essere stata letta dal disco. È annullabile.
numa_node int Nodo NUMA (non-uniform memory access) per il buffer. È annullabile.
read_microsec bigint Tempo effettivo (in microsecondi) necessario per leggere la pagina nel buffer. Questo numero viene reimpostato quando si riutilizza il buffer. È annullabile.
is_in_bpool_extension bit 1 = La pagina è nell'estensione del pool di buffer. È annullabile.
pdw_node_id int Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW)

Identificatore del nodo in cui è attiva la distribuzione.

Permissions

In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE.

Negli obiettivi del servizio Basic del Database SQL, S0 e S1 e per i database nei pool elastici, è richiesto l'account amministratore del server, l'account amministratore di Microsoft Entra o l’adesione nel ##MS_ServerStateReader## al ruolo del server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'adesione ruolo del server ##MS_ServerStateReader##.

Autorizzazioni per SQL Server 2022 e versioni successive

Richiede VIEW il permesso SERVER PERFORMANCE STATE sul server.

Osservazioni:

sys.dm_os_buffer_descriptors restituisce le pagine utilizzate dal database delle risorse. sys.dm_os_buffer_descriptors non restituisce informazioni sulle pagine gratuite o rubate o sulle pagine con errori durante la lettura.

Da Per Attivato Relationship
sys.dm_os_buffer_descriptors sys.databases database_id molti-a-uno
sys.dm_os_buffer_descriptors <UserDB>.sys.allocation_units allocation_unit_id molti-a-uno
sys.dm_os_buffer_descriptors <UserDB>.sys.database_files ID del file molti-a-uno
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration ID del file molti-a-uno

Examples

A. Restituzione del conteggio delle pagine memorizzate nella cache per ogni database

Nell'esempio seguente viene restituito il conteggio delle pagine caricate per ogni database.

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. Restituzione del conteggio delle pagine memorizzate nella cache per ogni oggetto nel database corrente

Nell'esempio seguente viene restituito il conteggio delle pagine caricate per ogni oggetto nel database corrente.

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;  

Vedere anche

sys.allocation_units (Transact-SQL)

Viste a gestione dinamica correlate al sistema operativo SQL Server (Transact-SQL)
Database Resource
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)