Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Analytics 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)