Partilhar via


sys.dm_os_buffer_descriptors (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Devolve informações sobre todas as páginas de dados que estão atualmente no pool de buffer do SQL Server. A saída desta vista pode ser usada para determinar a distribuição das páginas da base de dados no buffer pool de acordo com base de dados, objeto ou tipo. No SQL Server, esta vista de gestão dinâmica também devolve informações sobre as páginas de dados no ficheiro de extensão do buffer pool. Para mais informações, consulte Extensão do Pool de Buffer.

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 em cache tem um descritor de buffer. Os descritores de buffer identificam de forma única cada página de dados que está atualmente armazenada em cache numa instância do SQL Server. sys.dm_os_buffer_descriptors devolve páginas em cache para todas as bases de dados de utilizadores e do sistema. Isto inclui páginas associadas à base de dados de Recursos.

Observação

Para chamar isto de Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_buffer_descriptors. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Description
database_id int ID da base de dados associada à página no buffer pool. É anulável.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou pool elástico, mas não em um servidor lógico.
identificação_de_ficheiro int ID do ficheiro que armazena a imagem persistente da página. É anulável.
page_id int ID da página dentro do ficheiro. É anulável.
page_level int Nível índice da página. É anulável.
allocation_unit_id bigint ID da unidade de alocação da página. Este valor pode ser usado para unir sys.allocation_units. É anulável.
page_type nvarchar(60) Tipo de página, tais como: Página de dados ou página de índice. É anulável.
row_count int Número de linhas na página. É anulável.
free_space_in_bytes int Quantidade de espaço livre disponível, em bytes, na página. É anulável.
is_modified bit 1 = A página foi modificada depois de ter sido lida do disco. É anulável.
numa_node int Nó de Acesso à Memória Não Uniforme para o buffer. É anulável.
read_microsec bigint O tempo real (em microssegundos) necessário para ler a página no buffer. Este número é reiniciado quando o buffer é reutilizado. É anulável.
is_in_bpool_extension bit 1 = Página está na extensão do buffer pool. É anulável.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que esta distribuição se encontra.

Permissions

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

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

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Observações

sys.dm_os_buffer_descriptors páginas de declarações que estão a ser usadas pela base de dados de Recursos. sys.dm_os_buffer_descriptors não devolve informações sobre páginas gratuitas ou roubadas, nem sobre páginas que apresentaram erros quando foram lidas.

De Para On Relacionamento
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.database_files identificação_de_ficheiro muitos-para-um
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration identificação_de_ficheiro muitos-para-um

Examples

A. Devolver a contagem de páginas em cache para cada base de dados

O exemplo seguinte devolve a contagem de páginas carregadas para cada base 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. Devolver a contagem de páginas em cache para cada objeto na base de dados atual

O exemplo seguinte devolve a contagem de páginas carregadas para cada objeto na base 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;  

Consulte também

sys.allocation_units (Transact-SQL)

Exibições de gerenciamento dinâmico relacionadas ao sistema operacional SQL Server (Transact-SQL)
Base de Dados de Recursos
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)