Freigeben über


sys.dm_os_out_of_memory_events

Gilt für:Azure SQL-DatenbankAzure SQL Managed Instance

Gibt einen Satz zuletzt nicht genügend Arbeitsspeicher (OOM)-Ereignisse zurück.

Weitere Informationen zu nicht genügend Arbeitsspeicherbedingungen in Azure SQL-Datenbank finden Sie unter "Problembehandlung bei Nichtspeicherfehlern in Azure SQL-Datenbank".

Spaltenname Datentyp Beschreibung
event_time datetime OOM-Ereigniszeit. Nicht nullbar.
oom_cause tinyint Ein numerischer Wert, der die Ursache für OOM angibt. Die OOM-Ursache wird durch einen heuristischen Algorithmus bestimmt und erhält einen begrenzten Grad an Konfidenz. Nicht nullbar.
oom_cause_desc nvarchar(30) Beschreibung von oom_cause. Nicht nullbar.
0. UNKNOWN - OOM-Ursache konnte nicht bestimmt werden
1. HEKATON_POOL_MEMORY_LOW – Unzureichender Arbeitsspeicher im Ressourcenpool, der für IN-Memory OLTP verwendet wird. Weitere Informationen finden Sie unter "In-Memory OLTP überwachen".
2. MEMORY_LOW – Nicht genügend Arbeitsspeicher für den Datenbankmodulprozess verfügbar
3. OS_MEMORY_PRESSURE - OOM aufgrund des externen Speicherdrucks vom Betriebssystem
4. OS_MEMORY_PRESSURE_SQL – OOM aufgrund des externen Speicherdrucks anderer Datenbankmodulinstanzen
5. - OOM aufgrund eines Lecks im Nicht-SOS-Speicher, z. B. NON_SOS_MEMORY_LEAK geladene Module
6. SERVERLESS_MEMORY_RECLAMATION – OOM im Zusammenhang mit der Speicherbekundung in einer serverlosen Datenbank
7. MEMORY_LEAK - OOM aufgrund eines Lecks im SOS-Speicher
8. SLOW_BUFFER_POOL_SHRINK - OOM aufgrund des Pufferpools nicht schnell genug Arbeitsspeicher unter Speicherdruck freigeben
9. INTERNAL_POOL – Unzureichender Arbeitsspeicher im internen Ressourcenpool
10. SYSTEM_POOL – Unzureichender Arbeitsspeicher in einem Systemressourcenpool
11. QUERY_MEMORY_GRANTS - OOM aufgrund großer Speichererteilungen, die von Abfragen gehalten werden
12. REPLICAS_AND_AVAILABILITY – OOM aufgrund von Workloads im SloSecSharedPool-Ressourcenpool
available_physical_memory_mb Int Verfügbarer physischer Arbeitsspeicher in Megabyte. Nicht nullbar.
initial_job_object_memory_limit_mb Int Grenzwert für auftragsobjektspeicher beim Starten des Datenbankmoduls in Megabyte. Weitere Informationen zu Auftragsobjekten finden Sie unter Ressourcengovernance. NULL-Werte sind zulässig.
current_job_object_memory_limit_mb Int Aktuelle Speichergrenze des Auftragsobjekts in Megabyte. NULL-Werte sind zulässig.
process_memory_usage_mb Int Gesamtanzahl der Verarbeitungsspeicherauslastung in Megabyte nach der Instanz. Nicht nullbar.
non_sos_memory_usage_mb Int Nicht-SOS-Verwendung in Megabyte, einschließlich SOS erstellter Threads, Threads, die von Nicht-SOS-Komponenten, geladenen DLLs usw. erstellt wurden. Kann nicht null sein.
committed_memory_target_mb Int SOS-Zielspeicher in Megabyte. Nicht nullbar.
committed_memory_mb Int SOS hat Arbeitsspeicher in Megabytes zugesichert. Nicht nullbar.
allocation_potential_memory_mb Int Arbeitsspeicher, der für die Datenbankmodulinstanz für neue Zuordnungen in Megabyte verfügbar ist. Nicht nullbar.
oom_factor tinyint Ein Wert, der zusätzliche Informationen im Zusammenhang mit dem OOM-Ereignis bereitstellt, nur für die interne Verwendung. Nicht nullbar.
oom_factor_desc nvarchar(30) Beschreibung von oom_factor. Nur zur internen Verwendung. Nicht nullbar.
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) Ressourcenpools, die nicht genügend Arbeitsspeicher haben, einschließlich Speicherauslastungsstatistiken für jeden Pool. Diese Informationen werden als JSON-Wert bereitgestellt. NULL-Werte sind zulässig.
top_memory_clerks nvarchar(4000) Die wichtigsten Speicherkaufleute nach Speicherverbrauch, einschließlich der Speicherauslastungsstatistiken für jeden Mitarbeiter. Diese Informationen werden als JSON-Wert bereitgestellt. NULL-Werte sind zulässig.
top_resource_pools nvarchar(4000) Die wichtigsten Ressourcenpools nach Speicherverbrauch, einschließlich Der Speicherauslastungsstatistiken für jeden Ressourcenpool. Diese Informationen werden als JSON-Wert bereitgestellt. NULL-Werte sind zulässig.
possible_leaked_memory_clerks nvarchar(4000) Speicherkaufleute, die Arbeitsspeicher verloren haben. Basierend auf Heuristiken und mit einem begrenzten Maß an Vertrauen. Diese Informationen werden als JSON-Wert bereitgestellt. NULL-Werte sind zulässig.
possible_non_sos_leaked_memory_mb Int Wenn vorhanden, ist kein SOS-Speicher in Megabyte verloren. Basierend auf Heuristiken und mit einem begrenzten Maß an Vertrauen. NULL-Werte sind zulässig.

Berechtigungen

Für Azure SQL verwaltete Instanz ist die Berechtigung erforderlichVIEW SERVER PERFORMANCE STATE.

Für die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos oder die Mitgliedschaft in der ##MS_ServerPerformanceStateReader##Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE PERFORMANCE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerPerformanceStateReader##-Serverrolle erforderlich.

Hinweise

Jede Zeile in dieser Ansicht stellt ein Nichtspeicherereignis (OOM) dar, das im Datenbankmodul aufgetreten ist. Nicht alle OOM-Ereignisse werden möglicherweise erfasst. Ältere OOM-Ereignisse können aus dem Resultset verschwinden, da neuere OOM-Ereignisse auftreten. Das Resultset wird nicht über Neustarts des Datenbankmoduls hinweg beibehalten.

Derzeit ist dieser DMV sichtbar, wird jedoch in SQL Server 2022 (16.x) und SQL Server 2025 (17.x) Preview nicht unterstützt.

summarized_oom_snapshot erweitertes Ereignis

Das summarized_oom_snapshot erweiterte Ereignis ist Teil der system_health Ereignissitzung, um die Erkennung von Speicherereignissen zu vereinfachen. Jedes summarized_oom_snapshot erweiterte Ereignis entspricht einer Zeile in sys.dm_os_out_of_memory_events. Weitere Informationen finden Sie im Blog: Eine neue Möglichkeit zur Problembehandlung bei unzureichendem Arbeitsspeicher in der Datenbank-Engine.

Beispiele

Ein. Abrufen aller verfügbaren OOM-Ereignisse

Im folgenden Beispiel werden alle Ereignisdaten zurückgegeben, die nach der letzten Zeit für das Datenbankmodul sortiert wurden, in dem die aktuell verbundene Datenbank gehostet wird.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Abrufen der wichtigsten Speicherbearbeiter für jedes OOM-Ereignis

Im folgenden Beispiel wird eine Teilmenge von Ereignisdaten zurückgegeben und die JSON-Daten in der top_memory_clerks Spalte erweitert. Jede Zeile im Resultset stellt einen obersten Speicherbearbeiter für ein bestimmtes OOM-Ereignis dar.

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. Abrufen der wichtigsten Ressourcenpools für jedes OOM-Ereignis

Im folgenden Beispiel wird eine Teilmenge von Ereignisdaten zurückgegeben und die JSON-Daten in der top_resource_pools Spalte erweitert. Jede Zeile im Resultset stellt einen top-Ressourcenpool für ein bestimmtes OOM-Ereignis dar.

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;