sys.dm_os_buffer_descriptors (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

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.

Nota

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 colonna Tipo di dati Descrizione
database_id int ID del database associato alla pagina nel pool di buffer. Ammette i valori Null.

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

Identificatore del nodo in cui è attiva la distribuzione.

Autorizzazioni

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

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader## 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

È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il 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 file_id molti-a-uno
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration file_id molti-a-uno

Esempi

R. 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;  

Vedi 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)