sys.dm_os_buffer_descriptors (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Retorna informações sobre todas as páginas de dados que estão atualmente no pool de buffer do SQL Server. A saída dessa exibição pode ser usada para determinar a distribuição de páginas de bancos de dados no pool de buffer de acordo com o banco de dados, objeto ou tipo. No SQL Server, esse modo de exibição de gerenciamento dinâmico também retorna informações sobre as páginas de dados no arquivo de extensão do pool de buffers. Para obter mais informações, consulte Extensão do pool de buffers.

Quando uma página de dados é lida do disco, a página é copiada para o pool de buffers do SQL Server e armazenada em cache para reutilização. Cada página de dados tem um descritor de buffer. Os descritores de buffer identificam exclusivamente cada página de dados que está atualmente armazenada em cache em uma instância do SQL Server. sys.dm_os_buffer_descriptors retorna páginas armazenadas em cache para todos os usuários e bancos de dados do sistema. Isso inclui páginas que estão associadas ao banco de dados de Recursos.

Observação

Para chamar isso do Azure Synapse Analytics ou do Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_buffer_descriptors. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Descrição
database_id int Identificação do banco de dados associada à página no pool de buffer. Permite valor nulo.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou em um pool elástico, mas não em um servidor lógico.
file_id int Identificação do arquivo que armazena a imagem persistida da página. Permite valor nulo.
page_id int Identificação da página no arquivo. Permite valor nulo.
page_level int Nível de índice da página. Permite valor nulo.
allocation_unit_id bigint ID da unidade de alocação da página. Esse valor pode ser usado para unir sys.allocation_units. Permite valor nulo.
page_type nvarchar(60) Tipo da página, como: página de Dados ou página de Índice. Permite valor nulo.
row_count int Número de linhas na página. Permite valor nulo.
free_space_in_bytes int Quantidade de espaço livre disponível, em bytes, na página. Permite valor nulo.
is_modified bit 1 = A página foi modificada depois de lida no disco. Permite valor nulo.
numa_node int Nó de acesso à memória não uniforme do buffer. Permite valor nulo.
read_microsec bigint A hora real (em microssegundos) necessária para ler a página no buffer. Este número é redefinido quando o buffer é reutilizado. Permite valor nulo.
is_in_bpool_extension bit 1 = A página está na extensão do pool de buffers. Permite valor nulo.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que essa distribuição está ativada.

Permissões

No SQL Server e na Instância Gerenciada de SQL, requer a permissão VIEW SERVER STATE.

Nos objetivos de serviço do SQL Database Basic, S0 e S1 e para bancos de dados em pools elásticos, a conta de administrador do servidor, a conta de administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##função de servidor é necessária. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader## são necessárias.

Permissões do SQL Server 2022 e posteriores

É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Comentários

sys.dm_os_buffer_descriptors retorna páginas que estão sendo usadas pelo banco de dados Resource. sys.dm_os_buffer_descriptors não retorna informações sobre páginas gratuitas ou roubadas, ou sobre páginas que tiveram erros quando foram lidas.

De Para Ativado Relação
sys.dm_os_buffer_descriptors sys.databases database_id muitos para um
sys.dm_os_buffer_descriptors <userdb>.sys.unidades_de_alocação allocation_unit_id muitos para um
sys.dm_os_buffer_descriptors <userdb>.sys.database_files file_id muitos para um
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration file_id muitos para um

Exemplos

R. Retornando a contagem de páginas armazenadas em cache para cada banco de dados

O exemplo a seguir retorna a contagem de páginas carregadas em cada banco de dados.

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. Retorno de contagem de páginas para cada objeto no banco de dados atual

O exemplo a seguir retorna a contagem de páginas carregada em cada objeto no banco de dados atual.

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;  

Confira também

sys.allocation_units (Transact-SQL)

Exibições de gerenciamento dinâmico relacionadas ao sistema operacional do SQL Server (Transact-SQL)
Banco de dados de recursos
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)