sys.dm_os_buffer_descriptors (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

Devuelve información sobre todas las páginas de datos que se encuentran actualmente en el grupo de búferes de SQL Server. La salida de esta vista se puede utilizar para determinar la distribución de páginas de la base de datos en el grupo de búferes según la base de datos, el objeto o el tipo. En SQL Server, esta vista de administración dinámica también devuelve información sobre las páginas de datos del archivo de extensión del grupo de búferes. Para obtener más información, consulte Extensión del grupo de búferes.

Cuando se lee una página de datos del disco, la página se copia en el grupo de búferes de SQL Server y se almacena en caché para su reutilización. Cada página de datos almacenada en caché tiene un descriptor de búfer. Los descriptores de búfer identifican de forma única cada página de datos que se almacena actualmente en caché en una instancia de SQL Server. sys.dm_os_buffer_descriptors devuelve páginas en memoria caché para todas las bases de datos de usuario y de sistema. Esto incluye las páginas que están asociadas a la base de datos Resource.

Note

Para llamarlo desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_os_buffer_descriptors. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Nombre de la columna Tipo de dato Descripción
ID de base de datos int Identificador de la base de datos asociada con la página en el grupo de búferes. Es anulable.

En Azure SQL Database, los valores son únicos dentro de una base de datos única o un grupo elástico, pero no dentro de un servidor lógico.
ID del archivo int Identificador del archivo que almacena la imagen permanente de la página. Es anulable.
page_id int Id. de la página dentro del archivo. Es anulable.
page_level int Nivel de índice de la página. Es anulable.
allocation_unit_id bigint Identificador de la unidad de asignación de la página. Este valor se puede utilizar para combinar sys.allocation_units. Es anulable.
page_type nvarchar(60) Tipo de la página, como: página de datos o página de índice. Es anulable.
recuento_de_filas int Número de filas de la página. Es anulable.
free_space_in_bytes int Cantidad, en bytes, de espacio disponible en la página. Es anulable.
is_modified bit 1 = La página se ha modificado después de leerse en el disco. Es anulable.
numa_node int Nodo de acceso no uniforme a memoria para el búfer. Es anulable.
read_microsec bigint El tiempo real (en microsegundos) necesario para leer la página en el búfer. Este número se restablece cuando se reutiliza el búfer. Es anulable.
is_in_bpool_extension bit 1 = La página está en la extensión del grupo de búferes. Es anulable.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.

Permissions

En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.

En los objetivos de servicio Básico, S0 y S1 de SQL Database y para bases de datos en grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador Microsoft Entra o la pertenencia al ##MS_ServerStateReader##rol del servidor. En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.

Permisos para SQL Server 2022 y versiones posteriores

Requiere VIEW permiso de ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.

Comentarios

sys.dm_os_buffer_descriptors devuelve páginas que usa la base de datos de recursos. sys.dm_os_buffer_descriptors no devuelve información sobre páginas gratuitas o robadas, ni sobre las páginas que tenían errores cuando se leían.

De En Activado Relationship
sys.dm_os_buffer_descriptors sys.databases ID de base de datos varios a uno
sys.dm_os_buffer_descriptors <UserDB>.sys.allocation_units allocation_unit_id varios a uno
sys.dm_os_buffer_descriptors <UserDB>.sys.database_files ID del archivo varios a uno
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration ID del archivo varios a uno

Examples

A. Devolver el recuento de páginas almacenadas en caché de cada base de datos

En el ejemplo siguiente se devuelve el recuento de páginas cargadas para cada base de datos.

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. Devolver el recuento de páginas almacenadas en caché para cada objeto de la base de datos actual

En el ejemplo siguiente se devuelve el recuento de páginas cargadas para cada objeto en la base de datos actual.

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;  

Consulte también

sys.allocation_units (Transact-SQL)

Vistas de administración dinámica relacionadas con el sistema operativo de SQL Server (Transact-SQL)
Base de datos Resource
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)