Freigeben über


sys.dm_os_out_of_memory_events

Gilt für: Azure SQL-Datenbank Azure SQL verwaltete Instanz

Gibt ein Abmelden von OOM-Ereignissen (Out of Memory, OOM) 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 datetime2, nicht NULL OOM-Ereigniszeit
oom_cause tinyint, nicht null 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.
oom_cause_desc nvarchar(60), nicht null Beschreibung von oom_cause, eine von:
0. UNBEKANNT - 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. NON_SOS_MEMORY_LEAK - OOM aufgrund eines Lecks im Nicht-SOS-Speicher, z. B. 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 wird nicht schnell genug Arbeitsspeicher unter Speicherdruck freigegeben
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, nicht NULL Verfügbarer physischer Arbeitsspeicher in Megabyte
initial_job_object_memory_limit_mb int, null Grenzwert für auftragsobjektspeicher beim Starten des Datenbankmoduls in Megabyte. Weitere Informationen zu Auftragsobjekten finden Sie unter Ressourcengovernance.
current_job_object_memory_limit_mb int, null Aktuelle Speichergrenze des Auftragsobjekts in Megabyte
process_memory_usage_mb int, nicht NULL Gesamtauslastung des Prozessspeichers in Megabyte nach der Instanz
non_sos_memory_usage_mb int, nicht NULL Nicht-SOS-Verwendung in Megabyte, einschließlich SOS erstellter Threads, Threads, die von Nicht-SOS-Komponenten, geladenen DLLs usw. erstellt wurden.
committed_memory_target_mb int, nicht NULL SOS-Zielspeicher in Megabyte
committed_memory_mb int, nicht NULL SOS-Zugesicherten Speicher in Megabyte
allocation_potential_memory_mb int, nicht NULL Für die Datenbankmodulinstanz verfügbarer Speicher für neue Zuordnungen in Megabyte
oom_factor tinyint, nicht null Ein Wert, der zusätzliche Informationen im Zusammenhang mit dem OOM-Ereignis bereitstellt, nur für die interne Verwendung
oom_factor_desc nvarchar(60), nicht null Beschreibung von oom_factor. Nur zur internen Verwendung. Eine der folgenden Optionen:
0 – UNDEFINED
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 – SIMULIERT
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(max), null Ressourcenpools, die nicht genügend Arbeitsspeicher haben, einschließlich Speicherauslastungsstatistiken für jeden Pool. Diese Informationen werden als JSON-Wert bereitgestellt.
top_memory_clerks nvarchar(max), nicht NULL Die wichtigsten Speicherkaufleute nach Speicherverbrauch, einschließlich der Speicherauslastungsstatistiken für jeden Mitarbeiter. Diese Informationen werden als JSON-Wert bereitgestellt.
top_resource_pools nvarchar(max), nicht NULL Die wichtigsten Ressourcenpools nach Speicherverbrauch, einschließlich Der Speicherauslastungsstatistiken für jeden Ressourcenpool. Diese Informationen werden als JSON-Wert bereitgestellt.
possible_leaked_memory_clerks nvarchar(max), null Speicherkaufleute, die Arbeitsspeicher verloren haben. Basierend auf Heuristiken und mit einem begrenzten Maß an Vertrauen. Diese Informationen werden als JSON-Wert bereitgestellt.
possible_non_sos_leaked_memory_mb int, null Wenn vorhanden, ist kein SOS-Speicher in Megabyte verloren. Basierend auf Heuristiken und mit einem begrenzten Maß an Vertrauen.

Berechtigungen

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

Für SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto oder die Mitgliedschaft in der ##MS_ServerStateReader## Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-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) nicht unterstützt.

summarized_oom_snapshot erweitertes Ereignis

Das erweiterte summarized_oom_snapshot-Ereignis ist Teil der bestehenden system_health-Ereignissitzung und soll die Erkennung vereinfachen. Dieses Ereignis wird angezeigt, wenn nicht genügend Arbeitsspeicher (OOM)-Ereignisse erkannt werden. Dieser DMV richtet sich an die im summarized_oom_snapshot erweiterten Ereignis aufgezeichneten Aktivitäten, die im Januar 2022 an Azure SQL-Datenbank eingeführt wurden. Weitere Informationen finden Sie im Blog: Eine neue Möglichkeit zur Problembehandlung bei unzureichendem Arbeitsspeicher in der Datenbank-Engine.

Beispiel

Im folgenden Beispiel werden Ereignisdaten zurückgegeben, die nach der letzten Zeit für die aktuell verbundene Datenbank sortiert wurden.

SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;