Partilhar via


sys.dm_os_out_of_memory_events

Aplica-se a:Azure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Retorna um conjunto de eventos recentes de falta de memória (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 falta de memória no Banco de Dados SQL do Azure.

Nome da coluna Tipo de dados Descrição
event_time datetime Hora do evento OOM. Não é anulável.
oom_cause tinyint Um valor numérico que indica a causa raiz OOM. A causa OOM é determinada por um algoritmo heurístico e é fornecida com um grau finito de confiança. Não é anulável.
oom_cause_desc Nvarchar(30) Descrição de oom_cause. Não é anulável.
0. UNKNOWN - A causa OOM não pôde ser determinada
1. HEKATON_POOL_MEMORY_LOW - Memória insuficiente no pool de recursos usado para In-Memory OLTP. Para obter mais informações, consulte Monitor In-Memory OLTP.
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 da memória externa do sistema operacional
4. OS_MEMORY_PRESSURE_SQL - OOM devido à pressão da 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 uma fuga 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 Memória física disponível, em megabytes. Não é anulável.
initial_job_object_memory_limit_mb Int Limite de memória de 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. Anulável
current_job_object_memory_limit_mb Int Limite de memória atual do objeto de trabalho, em megabytes. Anulável
process_memory_usage_mb Int Uso total de memória de processo em megabytes pela instância. Não é anulável.
non_sos_memory_usage_mb Int Uso não-SOS em megabytes, incluindo threads criados por SOS, threads criados por componentes não-SOS, DLLs carregadas, etc. Não é anulável.
committed_memory_target_mb Int Memória de destino SOS em megabytes. Não é anulável.
committed_memory_mb Int SOS memória comprometida em megabytes. Não é anulável.
allocation_potential_memory_mb Int Memória disponível para a instância do mecanismo de banco de dados para novas alocações, em megabytes. Não é anulável.
oom_factor tinyint Um valor que fornece informações adicionais relacionadas ao evento OOM, apenas para uso interno. Não é anulável.
oom_factor_desc Nvarchar(30) Descrição de oom_factor. Apenas para uso interno. Não é anulável.
0 - UNDEFINED
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 - SIMULATED
9 - BUF_ALLOCATOR
10 - QUERY_MEM_QUEUE
11 - FRAGMENT
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools Nvarchar(4000) Pools de recursos sem memória, incluindo estatísticas de uso de memória para cada pool. Essas informações são fornecidas como um valor JSON. Anulável
top_memory_clerks Nvarchar(4000) 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. Anulável
top_resource_pools Nvarchar(4000) 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. Anulável
possible_leaked_memory_clerks Nvarchar(4000) Funcionários de memória que têm memória vazada. Baseado em heurísticas e dotado de um grau finito de confiança. Essas informações são fornecidas como um valor JSON. Anulável
possible_non_sos_leaked_memory_mb Int Memória não-SOS vazada em megabytes, se houver. Baseado em heurísticas e dotado de um grau finito de confiança. Anulável

Permissões

Na Instância Gerenciada SQL do Azure, requer VIEW SERVER PERFORMANCE 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_ServerPerformanceStateReader## é necessária. Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados ou a associação à função de servidor ##MS_ServerPerformanceStateReader##.

Observações

Cada linha nessa exibição representa um evento OOM (falta de memória) 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, este DMV está visível, mas não suportado no SQL Server 2022 (16.x) e SQL Server 2025 (17.x).

summarized_oom_snapshot evento prolongado

O summarized_oom_snapshot evento estendido faz parte da sessão de eventos para simplificar a system_health deteção de eventos sem memória. Cada summarized_oom_snapshot evento estendido corresponde a uma linha em sys.dm_os_out_of_memory_events. Para obter mais informações, consulte Blog: Uma nova maneira de solucionar erros de falta de memória no mecanismo de banco de dados.

Exemplos

Um. Obtenha todos os eventos OOM disponíveis

O exemplo a seguir retorna todos os dados de eventos ordenados pela hora mais recente para o mecanismo de banco de dados que hospeda o banco de dados conectado no momento.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Obtenha os melhores funcionários de memória para cada evento OOM

O exemplo a seguir retorna um subconjunto de dados de evento e expande os dados JSON na top_memory_clerks coluna. Cada linha no conjunto de resultados representa um funcionário de memória superior para um evento OOM específico.

SELECT event_time,
       oom_cause_desc,
       oom_factor_desc,
       oom_resource_pools,
       top_resource_pools,
       clerk_type_name,
       clerk_page_allocated_mb,
       clerk_vm_committed_mb
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_memory_clerks)
                    WITH (
                         clerk_type_name sysname '$.clerk_type_name',
                         clerk_page_allocated_mb bigint '$.page_allocated_mb',
                         clerk_vm_committed_mb bigint '$.vm_committed_mb'
                         )
ORDER BY event_time DESC, clerk_page_allocated_mb DESC;

C. Obtenha os principais pools de recursos para cada evento OOM

O exemplo a seguir retorna um subconjunto de dados de evento e expande os dados JSON na top_resource_pools coluna. Cada linha no conjunto de resultados representa um pool de recursos superior para um evento OOM específico.

SELECT event_time,
       oom_cause_desc,
       oom_factor_desc,
       oom_resource_pools,
       top_memory_clerks,
       pool_name,
       pool_allocations_mb,
       pool_target_mb,
       pool_is_oom
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_resource_pools)
                    WITH (
                         pool_name sysname '$.pool_name',
                         pool_allocations_mb bigint '$.allocations_mb',
                         pool_target_mb bigint '$.pool_target_mb',
                         pool_is_oom bit '$.is_oom'
                         )
ORDER BY event_time DESC, pool_allocations_mb DESC;