Condividi tramite


sys.dm_os_out_of_memory_events

Si applica a: database SQL di Azure Istanza gestita di SQL di Azure

Restituisce un log di eventi di memoria insufficiente (OOM).

Per altre informazioni sulle condizioni di memoria insufficiente in database SQL di Azure, vedere Risolvere gli errori di memoria insufficiente in database SQL di Azure.

Nome colonna Tipo di dati Descrizione
event_time datetime2, non null Ora evento OOM
oom_cause tinyint, non null Valore numerico che indica la causa radice OOM. La causa OOM è determinata da un algoritmo euristico e viene fornita con un grado finito di attendibilità.
oom_cause_desc nvarchar(60), non null Descrizione di oom_cause, uno dei seguenti:
0. SCONOSCIUTO - Impossibile determinare la causa OOM
1. HEKATON_POOL_MEMORY_LOW - Memoria insufficiente nel pool di risorse usato per OLTP in memoria. Per altre informazioni, vedere Monitorare OLTP in memoria.
2. MEMORY_LOW - Memoria insufficiente disponibile per il processo del motore di database
3. OS_MEMORY_PRESSURE - OOM a causa di una pressione di memoria esterna dal sistema operativo
4. OS_MEMORY_PRESSURE_SQL - OOM a causa di una pressione di memoria esterna da altre istanze del motore di database
5. NON_SOS_MEMORY_LEAK - OOM a causa di una perdita di memoria non SOS, ad esempio moduli caricati
6. SERVERLESS_MEMORY_RECLAMATION - OOM correlato al recupero della memoria in un database serverless
7. MEMORY_LEAK - OOM a causa di una perdita di memoria SOS
8. SLOW_BUFFER_POOL_SHRINK - OOM a causa del pool di buffer che non rilascia memoria abbastanza velocemente sotto pressione di memoria
9. INTERNAL_POOL - Memoria insufficiente nel pool di risorse interno
10. SYSTEM_POOL - Memoria insufficiente in un pool di risorse di sistema
11. QUERY_MEMORY_GRANTS - OOM a causa di concessioni di memoria di grandi dimensioni mantenute dalle query
12. REPLICAS_AND_AVAILABILITY - OOM a causa di carichi di lavoro nel pool di risorse SloSecSharedPool
available_physical_memory_mb int, non null Memoria fisica disponibile, in megabyte
initial_job_object_memory_limit_mb int, null Limite di memoria dell'oggetto processo all'avvio del motore di database, in megabyte. Per altre informazioni sugli oggetti processo, vedere Governance delle risorse.
current_job_object_memory_limit_mb int, null Limite di memoria corrente dell'oggetto processo, in megabyte
process_memory_usage_mb int, non null Utilizzo totale della memoria del processo in megabyte dall'istanza
non_sos_memory_usage_mb int, non null Utilizzo non SOS in megabyte, inclusi i thread creati da SOS, i thread creati da componenti non SOS, DLL caricate e così via.
committed_memory_target_mb int, non null Memoria di destinazione SOS in megabyte
committed_memory_mb int, non null Memoria di cui è stato eseguito il commit soS in megabyte
allocation_potential_memory_mb int, non null Memoria disponibile per l'istanza del motore di database per le nuove allocazioni, in megabyte
oom_factor tinyint, non null Valore che fornisce informazioni aggiuntive relative all'evento OOM, solo per uso interno
oom_factor_desc nvarchar(60), non null Descrizione di oom_factor. Solo per uso interno. Uno dei valori possibili:
0 - UNDEFINED
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 - SIMULATO
9 - BUF_ALLOCATOR
10 - QUERY_MEM_QUEUE
11 - FRAMMENTO
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools nvarchar(max), null Pool di risorse in memoria insufficiente, incluse le statistiche di utilizzo della memoria per ogni pool. Queste informazioni vengono fornite come valore JSON.
top_memory_clerks nvarchar(max), non null Top memory clerks by memory consumption , incluse le statistiche di utilizzo della memoria per ogni clerk. Queste informazioni vengono fornite come valore JSON.
top_resource_pools nvarchar(max), non null Pool di risorse principali in base al consumo di memoria, incluse le statistiche di utilizzo della memoria per ogni pool di risorse. Queste informazioni vengono fornite come valore JSON.
possible_leaked_memory_clerks nvarchar(max), null Clerk di memoria con memoria persa. Basato sull'euristica e fornito con un grado finito di fiducia. Queste informazioni vengono fornite come valore JSON.
possible_non_sos_leaked_memory_mb int, null Memoria non SOS persa in megabyte, se presente. Basato sull'euristica e fornito con un grado finito di fiducia.

Autorizzazioni

In Istanza gestita di SQL di Azure, è necessaria VIEW SERVER STATE l'autorizzazione.

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader## server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'adesione ruolo del server ##MS_ServerStateReader##.

Osservazioni:

Ogni riga in questa vista rappresenta un evento di memoria insufficiente (OOM) che si è verificato nel motore di database. Non tutti gli eventi OOM potrebbero essere acquisiti. Gli eventi OOM meno recenti possono scomparire dal set di risultati man mano che si verificano eventi OOM più recenti. Il set di risultati non viene salvato in modo permanente tra i riavvii del motore di database.

Questa DMV è attualmente visibile ma non supportata in SQL Server 2022 (16.x).

summarized_oom_snapshot evento esteso

L'evento summarized_oom_snapshot esteso fa parte della sessione eventi esistente system_health per semplificare il rilevamento. Questo evento viene visualizzato quando vengono rilevati eventi OOM (Out Of Memory). Questa DMV è allineata all'attività registrata nell'evento summarized_oom_snapshot esteso, entrambe introdotte in database SQL di Azure nel gennaio 2022. Per altre informazioni, vedere Blog: Un nuovo modo per risolvere gli errori di memoria insufficiente nel motore di database.

Esempio

Nell'esempio seguente vengono restituiti i dati dell'evento ordinati in base all'ora più recente per il database attualmente connesso.

SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;