sys.dm_os_memory_objects (Transact-SQL)

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

Retorna objetos de memória que estão alocados atualmente pelo SQL Server. Você pode usar sys.dm_os_memory_objects para analisar o uso de memória e identificar possíveis vazamentos de memória.

Observação

Para chamar isso do Azure Synapse Analytics ou do Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_memory_objects. 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
memory_object_address varbinary(8) Endereço do objeto de memória. Não permite valor nulo.
parent_address varbinary(8) Endereço do objeto de memória pai. Permite valor nulo.
pages_allocated_count int Aplica-se a: SQL Server (SQL Server 2008 (10.0.x) ao SQL Server 2008 R2 (10.50.x).

Número de páginas que são alocadas por esse objeto. Não permite valor nulo.
pages_in_bytes bigint Aplica-se a: SQL Server 2012 (11.x) e posterior.

Quantidade de memória em bytes alocada por essa instância do objeto de memória. Não permite valor nulo.
creation_options int Somente para uso interno. Permite valor nulo.
bytes_used bigint Somente para uso interno. Permite valor nulo.
tipo nvarchar(60) Tipo de objeto de memória.

Isso indica algum componente ao qual esse objeto de memória pertence ou a função do objeto de memória. Permite valor nulo.
name varchar(128) Somente para uso interno. Anulável.
memory_node_id smallint ID de um nó de memória que está sendo usado por esse objeto de memória. Não permite valor nulo.
creation_time datetime Somente para uso interno. Permite valor nulo.
max_pages_allocated_count int Aplica-se a: SQL Server (SQL Server 2008 (10.0.x) ao SQL Server 2008 R2 (10.50.x).

Número máximo de páginas alocadas por esse objeto de memória. Não permite valor nulo.
page_size_in_bytes int Aplica-se a: SQL Server 2012 (11.x) e posterior.

Tamanho das páginas em bytes alocadas por esse objeto. Não permite valor nulo.
max_pages_in_bytes bigint Quantidade máxima de memória sempre usada por esse objeto de memória. Não permite valor nulo.
page_allocator_address varbinary(8) Endereço de memória do alocador de página. Não permite valor nulo. Para obter mais informações, confira sys.dm_os_memory_clerks (Transact-SQL).
creation_stack_address varbinary(8) Somente para uso interno. Permite valor nulo.
sequence_num int Somente para uso interno. Permite valor nulo.
partition_type int Aplica-se a: SQL Server 2016 (13.x) e posterior.

O tipo de partição:

0 - Objeto de memória não particionável

1 - Objeto de memória particionável, atualmente não particionado

2 - Objeto de memória particionável, particionado pelo nó NUMA. Em um ambiente com um único nó NUMA, isso é equivalente a 1.

3 - Objeto de memória particionável, particionado pela CPU.
contention_factor real Aplica-se a: SQL Server 2016 (13.x) e posterior.

Um valor que especifica a contenção neste objeto de memória, com 0 significando nenhuma contenção. O valor é atualizado sempre que um número especificado de alocações de memória foi feito refletindo a contenção durante esse período. Aplica-se somente a objetos de memória thread-safe.
waiting_tasks_count bigint Aplica-se a: SQL Server 2016 (13.x) e posterior.

Número de esperas neste objeto de memória. Esse contador é incrementado sempre que a memória é alocada a partir desse objeto de memória. O incremento é o número de tarefas atualmente aguardando acesso a esse objeto de memória. Aplica-se somente a objetos de memória thread-safe. Este é um valor de melhor esforço sem uma garantia de correção.
exclusive_access_count bigint Aplica-se a: SQL Server 2016 (13.x) e posterior.

Especifica com que frequência esse objeto de memória foi acessado exclusivamente. Aplica-se somente a objetos de memória thread-safe. Este é um valor de melhor esforço sem uma garantia de correção.
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.

partition_type, contention_factor, waiting_tasks_count e exclusive_access_count ainda não estão implementados no Banco de dados SQL.

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

Os objetos de memória são heaps. Eles fornecem alocações que possuem uma granularidade maior do que a fornecida pelos administradores de memória. Os componentes do SQL Server usam objetos de memória em vez de atendentes de memória. Os objetos de memória usam a interface do alocador de página do administrador de memória para alocar páginas. Eles não usam interfaces de memória virtuais ou compartilhadas. Dependendo dos padrões de alocação, os componentes podem criar tipos diferentes de objetos de memória para alocar regiões de tamanho arbitrário.

O tamanho de página típico para um objeto de memória é 8 KB. Entretanto, objetos de memória incrementais podem ter tamanhos de página que variam de 512 bytes a 8 KB.

Observação

O tamanho de página não é uma alocação máxima. Na verdade, o tamanho de página é a granularidade de alocação com suporte oferecida por um alocador de página e é implementado por um administrador de memória. Você pode solicitar alocações com mais de 8 KB de objetos de memória.

Exemplos

O exemplo a seguir retorna a quantidade de memória alocada em cada tipo de objeto de memória.

SELECT SUM (pages_in_bytes) as 'Bytes Used', type   
FROM sys.dm_os_memory_objects  
GROUP BY type   
ORDER BY 'Bytes Used' DESC;  
GO  

Confira também

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