Delen via


sys.dm_os_out_of_memory_events

Van toepassing op:Azure SQL DatabaseAzure SQL Managed Instance

Retourneert een reeks recente OOM-gebeurtenissen (out of memory).

Zie Problemen met onvoldoende geheugen in Azure SQL Database oplossen voor meer informatie over onvoldoende geheugen in Azure SQL Database.

Kolomnaam Gegevenstype Beschrijving
event_time datum en tijd OOM-gebeurtenistijd. Is niet nulbaar.
oom_cause tinyint Een numerieke waarde die de hoofdoorzaak van de OOM aangeeft. De oorzaak van de OOM wordt bepaald door een heuristisch algoritme en wordt voorzien van een eindige mate van vertrouwen. Is niet nulbaar.
oom_cause_desc nvarchar(30) Beschrijving van oom_cause. Is niet nulbaar.
0. UNKNOWN - De oorzaak van de OOM kan niet worden bepaald
1. HEKATON_POOL_MEMORY_LOW - Onvoldoende geheugen in de resourcegroep die wordt gebruikt voor In-Memory OLTP. Zie Monitor In-Memory OLTP voor meer informatie.
2. MEMORY_LOW - Onvoldoende geheugen beschikbaar voor het database-engineproces
3. OS_MEMORY_PRESSURE - OOM vanwege externe geheugendruk van het besturingssysteem
4. OS_MEMORY_PRESSURE_SQL - OOM vanwege externe geheugenbelasting van andere exemplaren van de database-engine
5. NON_SOS_MEMORY_LEAK - OOM vanwege een lek in niet-SOS-geheugen, bijvoorbeeld geladen modules
6. SERVERLESS_MEMORY_RECLAMATION - OOM gerelateerd aan geheugenherstel in een serverloze database
7. MEMORY_LEAK - OOM vanwege een lek in SOS-geheugen
8. SLOW_BUFFER_POOL_SHRINK - OOM vanwege de buffergroep die onvoldoende geheugen vrijgeeft onder geheugendruk
9. INTERNAL_POOL - Onvoldoende geheugen in de interne resourcegroep
10. SYSTEM_POOL - Onvoldoende geheugen in een systeemresourcegroep
11. QUERY_MEMORY_GRANTS - OOM vanwege grote geheugentoekenningen die worden gehouden door query's
12. REPLICAS_AND_AVAILABILITY - OOM vanwege workloads in SloSecSharedPool-resourcegroep
available_physical_memory_mb Int Beschikbaar fysiek geheugen, in megabytes. Is niet nulbaar.
initial_job_object_memory_limit_mb Int Geheugenlimiet voor taakobject bij het opstarten van de database-engine, in megabytes. Zie Resourcebeheer voor meer informatie over taakobjecten. Kan null zijn.
current_job_object_memory_limit_mb Int Taakobject huidige geheugenlimiet, in megabytes. Kan null zijn.
process_memory_usage_mb Int Het totale geheugengebruik van het proces in megabytes per exemplaar. Is niet nulbaar.
non_sos_memory_usage_mb Int Niet-SOS-gebruik in megabytes, waaronder door SOS gemaakte threads, threads die zijn gemaakt door niet-SOS-onderdelen, geladen DLL's, enzovoort. Is niet nullable.
committed_memory_target_mb Int SOS-doelgeheugen in megabytes. Is niet nulbaar.
committed_memory_mb Int SOS vastgelegde geheugen in megabytes. Is niet nulbaar.
allocation_potential_memory_mb Int Geheugen dat beschikbaar is voor het database-engineexemplaren voor nieuwe toewijzingen, in megabytes. Is niet nulbaar.
oom_factor tinyint Een waarde die aanvullende informatie biedt met betrekking tot de OOM-gebeurtenis, alleen voor intern gebruik. Is niet nulbaar.
oom_factor_desc nvarchar(30) Beschrijving van oom_factor. Alleen voor intern gebruik. Is niet nulbaar.
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) Resourcegroepen die onvoldoende geheugen bevatten, inclusief statistieken voor geheugengebruik voor elke pool. Deze informatie wordt verstrekt als een JSON-waarde. Kan null zijn.
top_memory_clerks nvarchar(4000) Belangrijkste geheugenbediende medewerkers per geheugenverbruik, inclusief statistieken voor geheugengebruik voor elke bediende. Deze informatie wordt verstrekt als een JSON-waarde. Kan null zijn.
top_resource_pools nvarchar(4000) Belangrijkste resourcegroepen op basis van geheugenverbruik, inclusief statistieken over geheugengebruik voor elke resourcegroep. Deze informatie wordt verstrekt als een JSON-waarde. Kan null zijn.
possible_leaked_memory_clerks nvarchar(4000) Geheugenbediendes die geheugen hebben gelekt. Gebaseerd op heuristiek en voorzien van een eindige mate van vertrouwen. Deze informatie wordt verstrekt als een JSON-waarde. Kan null zijn.
possible_non_sos_leaked_memory_mb Int Gelekt niet-SOS-geheugen in megabytes, indien van toepassing. Gebaseerd op heuristiek en voorzien van een eindige mate van vertrouwen. Kan null zijn.

Machtigingen

Voor Azure SQL Managed Instance is een machtiging vereist VIEW SERVER PERFORMANCE STATE .

Op SQL Database Basic, S0en S1 servicedoelstellingen, en voor databases in elastische pools, is het serverbeheerder--account, het Microsoft Entra-beheerdersaccount of lidmaatschap van de ##MS_ServerPerformanceStateReader##-server functie vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE PERFORMANCE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerPerformanceStateReader##-serverfunctie vereist.

Opmerkingen

Elke rij in deze weergave vertegenwoordigt een OOM-gebeurtenis (out of memory) die is opgetreden in de database-engine. Niet alle OOM-gebeurtenissen kunnen worden vastgelegd. Oudere OOM-gebeurtenissen kunnen verdwijnen uit de resultatenset naarmate recentere OOM-gebeurtenissen optreden. De resultatenset blijft niet behouden tijdens het opnieuw opstarten van de database-engine.

Momenteel is deze DMV zichtbaar, maar wordt niet ondersteund in SQL Server 2022 (16.x) en SQL Server 2025 (17.x) Preview.

uitgebreide gebeurtenis summarized_oom_snapshot

De summarized_oom_snapshot uitgebreide gebeurtenis maakt deel uit van de system_health gebeurtenissessie om de detectie van gebeurtenissen buiten het geheugen te vereenvoudigen. Elke summarized_oom_snapshot uitgebreide gebeurtenis komt overeen met een rij in sys.dm_os_out_of_memory_events. Zie Blog: Een nieuwe manier om geheugenfouten in de database-engine op te lossen voor meer informatie.

Voorbeelden

Eén. Alle beschikbare OOM-gebeurtenissen ophalen

In het volgende voorbeeld worden alle gebeurtenisgegevens geretourneerd die zijn gerangschikt op de meest recente tijd voor de database-engine die als host fungeert voor de momenteel verbonden database.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. De beste geheugenbediende voor elke OOM-gebeurtenis ophalen

In het volgende voorbeeld wordt een subset van gebeurtenisgegevens geretourneerd en worden de JSON-gegevens in de top_memory_clerks kolom uitgebreid. Elke rij in de resultatenset vertegenwoordigt een geheugenbediende voor een specifieke OOM-gebeurtenis.

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. De beste resourcegroepen ophalen voor elke OOM-gebeurtenis

In het volgende voorbeeld wordt een subset van gebeurtenisgegevens geretourneerd en worden de JSON-gegevens in de top_resource_pools kolom uitgebreid. Elke rij in de resultatenset vertegenwoordigt een topresourcegroep voor een specifieke OOM-gebeurtenis.

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;