sys.dm_os_memory_objects (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 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 PDW (Analytics Platform System), 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 nesse 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 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 a frequência com que 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 foram 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 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
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 administradores 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 de um objeto de memória é de 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)