Sdílet prostřednictvím


sys.dm_os_out_of_memory_events

Platí na:Azure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrátí sadu nedávných událostí nedostatku paměti (OOM).

Další informace o stavu nedostatku paměti ve službě Azure SQL Database najdete v tématu Řešení potíží s chybami nedostatku paměti ve službě Azure SQL Database.

Název sloupce Datový typ Popis
event_time datum a čas Čas události OOM. Není možné nastavit jako null.
oom_cause tinyint Číselná hodnota označující původní příčinu objektu OOM. Příčina OOM je určena heuristickým algoritmem a poskytuje konečný stupeň spolehlivosti. Není možné nastavit jako null.
oom_cause_desc nvarchar(30) Popis .oom_cause Není možné nastavit jako null.
0. – Nelze určit příčinu objektu OOM. UNKNOWN
1. HEKATON_POOL_MEMORY_LOW – nedostatek paměti ve fondu zdrojů, který se používá pro In-Memory OLTP. Další informace najdete v tématu Monitorování In-Memory OLTP.
2. MEMORY_LOW - Nedostatek paměti k dispozici pro proces databázového stroje
3. OS_MEMORY_PRESSURE – OOM kvůli zatížení externí paměti z operačního systému
4. OS_MEMORY_PRESSURE_SQL – OOM kvůli zatížení externí paměti z jiných instancí databázového stroje
5. NON_SOS_MEMORY_LEAK – OOM kvůli nevracení paměti mimo SOS, například načtených modulů
6. SERVERLESS_MEMORY_RECLAMATION – OOM související s reclamací paměti v bezserverové databázi
7. MEMORY_LEAK – OOM kvůli nevracení v paměti SOS
8. SLOW_BUFFER_POOL_SHRINK – OOM kvůli fondu vyrovnávací paměti nevolní paměť dostatečně rychle pod tlakem paměti
9. INTERNAL_POOL – Nedostatek paměti v interním fondu zdrojů
10. SYSTEM_POOL – Nedostatek paměti ve fondu systémových zdrojů
11. QUERY_MEMORY_GRANTS – OOM kvůli velkým paměťovým grantům uchovávaným dotazy
12. REPLICAS_AND_AVAILABILITY – OOM kvůli úlohám ve fondu zdrojů SloSecSharedPool
available_physical_memory_mb Int Dostupná fyzická paměť v megabajtech. Není možné nastavit jako null.
initial_job_object_memory_limit_mb Int Omezení paměti objektu úlohy při spuštění databázového stroje v megabajtech. Další informace oobjektch Nulovatelný.
current_job_object_memory_limit_mb Int Aktuální limit paměti objektu úlohy v megabajtech. Nulovatelný.
process_memory_usage_mb Int Celkové využití paměti procesu v megabajtech instance. Není možné nastavit jako null.
non_sos_memory_usage_mb Int Jiné využití než SOS v megabajtech, včetně vláken vytvořených soS, vláken vytvořených komponentami bez SOS, načtených knihoven DLL atd. Není možné použít hodnotu null.
committed_memory_target_mb Int Cílová paměť SOS v megabajtech. Není možné nastavit jako null.
committed_memory_mb Int Potvrzená paměť SOS v megabajtech. Není možné nastavit jako null.
allocation_potential_memory_mb Int Paměť dostupná pro instanci databázového stroje pro nové přidělení v megabajtech. Není možné nastavit jako null.
oom_factor tinyint Hodnota, která poskytuje další informace související s událostí OOM, pouze pro interní použití. Není možné nastavit jako null.
oom_factor_desc nvarchar(30) Popis .oom_factor Pouze pro interní použití. Není možné nastavit jako null.
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) Fondy zdrojů, které nejsou v paměti, včetně statistik využití paměti pro každý fond. Tyto informace se poskytují jako hodnota JSON. Nulovatelný.
top_memory_clerks nvarchar(4000) Nejvyšší pracovníci paměti podle spotřeby paměti, včetně statistik využití paměti pro každého úředníka. Tyto informace se poskytují jako hodnota JSON. Nulovatelný.
top_resource_pools nvarchar(4000) Hlavní fondy zdrojů podle spotřeby paměti, včetně statistik využití paměti pro každý fond zdrojů. Tyto informace se poskytují jako hodnota JSON. Nulovatelný.
possible_leaked_memory_clerks nvarchar(4000) Pracovníci paměti, kteří nevráceli paměť. Na základě heuristiky a poskytnuté s konečným stupněm spolehlivosti. Tyto informace se poskytují jako hodnota JSON. Nulovatelný.
possible_non_sos_leaked_memory_mb Int Nevrácená paměť bez SOS v megabajtech, pokud existuje. Na základě heuristiky a poskytnuté s konečným stupněm spolehlivosti. Nulovatelný.

Povolení

Ve službě Azure SQL Managed Instance vyžaduje VIEW SERVER PERFORMANCE STATE oprávnění.

U služby SQL Database Basic, S0a S1 a pro databáze v elastických fondech, účet správce serveru serveru, účet správce Microsoft Entra nebo členství v roli ##MS_ServerPerformanceStateReader##serveru. U všech ostatních cílů služby SQL Database se vyžaduje buď oprávnění VIEW DATABASE PERFORMANCE STATE k databázi, nebo členství v roli serveru ##MS_ServerPerformanceStateReader##.

Poznámky

Každý řádek v tomto zobrazení představuje událost mimo paměť (OOM), ke které došlo v databázovém stroji. Ne všechny události OOM mohou být zachyceny. Starší události OOM můžou z sady výsledků zmizet, protože dochází k novějším událostem OOM. Sada výsledků se při restartování databázového stroje neuchová.

V současnosti je toto DMV viditelné, ale není podporováno v SQL Server 2022 (16.x) a SQL Server 2025 (17.x).

summarized_oom_snapshot rozšířená událost

summarized_oom_snapshot Rozšířená událost je součástí system_health relace událostí, která zjednodušuje detekci událostí nedostatku paměti. Každá summarized_oom_snapshot rozšířená událost odpovídá řádku v sys.dm_os_out_of_memory_events. Další informace najdete v tématu Blog: Nový způsob řešení chyb nedostatku paměti v databázovém stroji.

Příklady

A. Získání všech dostupných událostí OOM

Následující příklad vrátí všechna data událostí seřazená posledním časem databázového stroje hostujícího aktuálně připojenou databázi.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Získání hlavních úředníků paměti pro každou událost OOM

Následující příklad vrátí podmnožinu dat události a rozbalí data JSON ve sloupci top_memory_clerks . Každý řádek v sadě výsledků představuje hlavního pracovníka paměti pro konkrétní událost OOM.

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. Získání hlavních fondů zdrojů pro každou událost OOM

Následující příklad vrátí podmnožinu dat události a rozbalí data JSON ve sloupci top_resource_pools . Každý řádek v sadě výsledků představuje fond hlavních zdrojů pro konkrétní událost OOM.

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;