Compartilhar via


sys.dm_os_buffer_descriptors (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Retorna informações sobre todas as páginas de dados que estão atualmente no pool de buffers 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, essa 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 Buffer Pool.

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 PDW (Analytics Platform System), 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 buffer pool. 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 Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader## função de servidor. 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 de recursos. sys.dm_os_buffer_descriptors não retorna informações sobre páginas gratuitas ou roubadas, ou sobre páginas que tinham 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.allocation_units allocation_unit_id muitos para um
sys.dm_os_buffer_descriptors <userdb>.sys.arquivos_de_banco de dados 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)