sys.dm_os_out_of_memory_events

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Retorna um log de eventos de memória insuficiente (OOM).

Para obter mais informações sobre condições de falta de memória no Banco de Dados SQL do Azure, consulte Solucionar problemas de erros de memória insuficiente no Banco de Dados SQL do Azure.

Nome da Coluna Tipo de Dados Descrição
event_time datetime2, não nulo Hora do evento OOM
oom_cause tinyint, não nulo Um valor numérico que indica a causa raiz do OOM. A causa OOM é determinada por um algoritmo heurístico e é fornecida com um grau finito de confiança.
oom_cause_desc nvarchar(60), não nulo Descrição de oom_cause, um dos:
0. DESCONHECIDO - A causa do OOM não pôde ser determinada
1. HEKATON_POOL_MEMORY_LOW - Memória insuficiente no pool de recursos usado para OLTP na memória. Para obter mais informações, consulte Monitorar OLTP na memória.
2. MEMORY_LOW - Memória insuficiente disponível para o processo do mecanismo de banco de dados
3. OS_MEMORY_PRESSURE - OOM devido à pressão de memória externa do sistema operacional
4. OS_MEMORY_PRESSURE_SQL - OOM devido à pressão de memória externa de outra(s) instância(s) do mecanismo de banco de dados
5. NON_SOS_MEMORY_LEAK - OOM devido a um vazamento na memória não-SOS, por exemplo, módulos carregados
6. SERVERLESS_MEMORY_RECLAMATION - OOM relacionado à recuperação de memória em um banco de dados sem servidor
7. MEMORY_LEAK - OOM devido a um vazamento na memória SOS
8. SLOW_BUFFER_POOL_SHRINK - OOM devido ao pool de buffer não liberar memória rápido o suficiente sob pressão de memória
9. INTERNAL_POOL - Memória insuficiente no pool de recursos internos
10. SYSTEM_POOL - Memória insuficiente em um pool de recursos do sistema
11. QUERY_MEMORY_GRANTS - OOM devido a grandes concessões de memória mantidas por consultas
12. REPLICAS_AND_AVAILABILITY - OOM devido a cargas de trabalho no pool de recursos SloSecSharedPool
available_physical_memory_mb int, não nulo Memória física disponível, em megabytes
initial_job_object_memory_limit_mb int, nulo Limite de memória do objeto de trabalho na inicialização do mecanismo de banco de dados, em megabytes. Para obter mais informações sobre objetos de trabalho, consulte Governança de recursos.
current_job_object_memory_limit_mb int, nulo Limite de memória atual do objeto de trabalho, em megabytes
process_memory_usage_mb int, não nulo Uso total de memória de processo em megabytes pela instância
non_sos_memory_usage_mb int, não nulo Uso não-SOS em megabytes, incluindo threads criados por SOS, threads criados por componentes não-SOS, DLLs carregadas, etc.
committed_memory_target_mb int, não nulo Memória de destino SOS em megabytes
committed_memory_mb int, não nulo SOS memória confirmada em megabytes
allocation_potential_memory_mb int, não nulo Memória disponível para a instância do mecanismo de banco de dados para novas alocações, em megabytes
oom_factor tinyint, não nulo Um valor que fornece informações adicionais relacionadas ao evento OOM, somente para uso interno
oom_factor_desc nvarchar(60), não nulo Descrição de oom_factor. Somente para uso Interno. Um destes:
0 - INDEFINIDO
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 - SIMULADO
9 - BUF_ALLOCATOR
10 - QUERY_MEM_QUEUE
11 - FRAGMENTO
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools nvarchar(max), nulo Pools de recursos que estão sem memória, incluindo estatísticas de uso de memória para cada pool. Essas informações são fornecidas como um valor JSON.
top_memory_clerks nvarchar(max), não nulo Principais funcionários de memória por consumo de memória, incluindo estatísticas de uso de memória para cada funcionário. Essas informações são fornecidas como um valor JSON.
top_resource_pools nvarchar(max), não nulo Principais pools de recursos por consumo de memória, incluindo estatísticas de uso de memória para cada pool de recursos. Essas informações são fornecidas como um valor JSON.
possible_leaked_memory_clerks nvarchar(max), nulo Funcionários de memória que vazaram memória. Baseado em heurísticas e provido de um grau finito de confiança. Essas informações são fornecidas como um valor JSON.
possible_non_sos_leaked_memory_mb int, nulo Vazou memória não-SOS em megabytes, se houver. Baseado em heurísticas e provido de um grau finito de confiança.

Permissões

Na Instância Gerenciada SQL do Azure, requer VIEW SERVER STATE permissão.

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ária 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.

Comentários

Cada linha nesse modo de exibição representa um evento de falta de memória (OOM) que ocorreu no mecanismo de banco de dados. Nem todos os eventos OOM podem ser capturados. Eventos OOM mais antigos podem desaparecer do conjunto de resultados à medida que eventos OOM mais recentes ocorrem. O conjunto de resultados não é persistido nas reinicializações do mecanismo de banco de dados.

Atualmente, esse DMV está visível, mas não tem suporte no SQL Server 2022 (16.x).

summarized_oom_snapshot evento estendido

O evento estendido summarized_oom_snapshot faz parte da sessão de evento existente system_health para simplificar a detecção. Esse evento aparece quando eventos de falta de memória (OOM) são detectados. Esse DMV se alinha à atividade registrada no evento estendido, ambos introduzidos summarized_oom_snapshot no Banco de Dados SQL do Azure em janeiro de 2022. Para obter mais informações, consulte o blog: Uma nova maneira de solucionar erros de memória no mecanismo de banco de dados.

Exemplo

O exemplo a seguir retorna dados de evento ordenados pela hora mais recente para o banco de dados conectado no momento.

SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;