Udostępnij za pomocą


sys.dm_os_out_of_memory_events

Dotyczy do:Azure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w Microsoft Fabric

Zwraca zestaw ostatnich zdarzeń braku pamięci (OOM).

Aby uzyskać więcej informacji na temat warunków braku pamięci w usłudze Azure SQL Database, zobacz Rozwiązywanie problemów z błędami braku pamięci w usłudze Azure SQL Database.

Nazwa kolumny Typ danych Opis
event_time data/godzina Czas zdarzenia OOM. Nie jest nullowalny.
oom_cause tinyint Wartość liczbowa wskazująca główną przyczynę OOM. Przyczyna OOM jest określana przez algorytm heurystyczny i zapewnia skończony stopień ufności. Nie jest nullowalny.
oom_cause_desc nvarchar(30) Opis elementu oom_cause. Nie jest nullowalny.
0. UNKNOWN — Nie można ustalić przyczyny OOM
1. HEKATON_POOL_MEMORY_LOW — niewystarczająca ilość pamięci w puli zasobów używanej do In-Memory OLTP. Aby uzyskać więcej informacji, zobacz Monitorowanie In-Memory OLTP.
2. MEMORY_LOW — Niewystarczająca ilość pamięci dostępnej dla procesu aparatu bazy danych
3. OS_MEMORY_PRESSURE — OOM ze względu na wykorzystanie pamięci zewnętrznej z systemu operacyjnego
4. OS_MEMORY_PRESSURE_SQL — OOM ze względu na wykorzystanie pamięci zewnętrznej z innych wystąpień aparatu bazy danych
5. NON_SOS_MEMORY_LEAK — OOM spowodowany wyciekiem w pamięci innej niż SOS, na przykład załadowane moduły
6. SERVERLESS_MEMORY_RECLAMATION — OOM związane z odzyskiwaniem pamięci w bezserwerowej bazie danych
7. MEMORY_LEAK — OOM z powodu przecieku w pamięci SOS
8. SLOW_BUFFER_POOL_SHRINK — OOM ze względu na to, że pula nie zwalnia pamięci wystarczająco szybko pod ciśnieniem pamięci
9. INTERNAL_POOL — Niewystarczająca ilość pamięci w wewnętrznej puli zasobów
10. SYSTEM_POOL — Niewystarczająca ilość pamięci w puli zasobów systemowych
11. QUERY_MEMORY_GRANTS — OOM ze względu na duże przydziały pamięci przechowywane przez zapytania
12. REPLICAS_AND_AVAILABILITY — OOM ze względu na obciążenia w puli zasobów SloSecSharedPool
available_physical_memory_mb Int Dostępna pamięć fizyczna w megabajtach. Nie jest nullowalny.
initial_job_object_memory_limit_mb Int Limit pamięci obiektu zadania podczas uruchamiania aparatu bazy danych w megabajtach. Aby uzyskać więcej informacji na temat obiektów zadań, zobacz Zarządzanie zasobami. Zmienna mogąca przyjmować wartość null.
current_job_object_memory_limit_mb Int Limit pamięci obiektu zadania w megabajtach. Zmienna mogąca przyjmować wartość null.
process_memory_usage_mb Int Łączne użycie pamięci procesu w megabajtach przez wystąpienie. Nie jest nullowalny.
non_sos_memory_usage_mb Int Użycie innych niż SOS w megabajtach, w tym wątki utworzone przez sos, wątki utworzone przez składniki inne niż SOS, załadowane biblioteki DLL itp. Nie może zawierać wartości null.
committed_memory_target_mb Int Pamięć docelowa SOS w megabajtach. Nie jest nullowalny.
committed_memory_mb Int Pamięć zatwierdzona przez sos w megabajtach. Nie jest nullowalny.
allocation_potential_memory_mb Int Pamięć dostępna dla wystąpienia aparatu bazy danych dla nowych alokacji w megabajtach. Nie jest nullowalny.
oom_factor tinyint Wartość, która udostępnia dodatkowe informacje związane ze zdarzeniem OOM, tylko do użytku wewnętrznego. Nie jest nullowalny.
oom_factor_desc nvarchar(30) Opis elementu oom_factor. Tylko do użytku wewnętrznego. Nie jest nullowalny.
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) Pule zasobów, które są poza pamięcią, w tym statystyki użycia pamięci dla każdej puli. Te informacje są dostarczane jako wartość JSON. Zmienna mogąca przyjmować wartość null.
top_memory_clerks nvarchar(4000) Najważniejsze urzędy pamięci według użycia pamięci, w tym statystyki użycia pamięci dla każdego urzędnika. Te informacje są dostarczane jako wartość JSON. Zmienna mogąca przyjmować wartość null.
top_resource_pools nvarchar(4000) Najważniejsze pule zasobów według użycia pamięci, w tym statystyki użycia pamięci dla każdej puli zasobów. Te informacje są dostarczane jako wartość JSON. Zmienna mogąca przyjmować wartość null.
possible_leaked_memory_clerks nvarchar(4000) pamięci, które wyciekły pamięci. Na podstawie heurystyki i zapewnia skończony stopień pewności siebie. Te informacje są dostarczane jako wartość JSON. Zmienna mogąca przyjmować wartość null.
possible_non_sos_leaked_memory_mb Int Wyciekła pamięć niezwiązana z sosem w megabajtach, jeśli istnieje. Na podstawie heurystyki i zapewnia skończony stopień pewności siebie. Zmienna mogąca przyjmować wartość null.

Uprawnienia

W usłudze Azure SQL Managed Instance wymagane jest VIEW SERVER PERFORMANCE STATE uprawnienie.

W usłudze SQL Database w warstwie PodstawowaS0i S1 celów usługi oraz baz danych welastycznych pulachwymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w roli serwera . We wszystkich innych celach usługi SQL Database wymagane jest uprawnienie VIEW DATABASE PERFORMANCE STATE w bazie danych lub członkostwo w roli serwera ##MS_ServerPerformanceStateReader##.

Uwagi

Każdy wiersz w tym widoku reprezentuje zdarzenie braku pamięci (OOM), które wystąpiło w akompacie bazy danych. Nie wszystkie zdarzenia OOM mogą być przechwytywane. Starsze zdarzenia OOM mogą zniknąć z zestawu wyników w miarę występowania najnowszych zdarzeń OOM. Zestaw wyników nie jest utrwalany podczas ponownego uruchamiania aparatu bazy danych.

Obecnie ten DMV jest widoczny, ale nie jest wspierany w SQL Server 2022 (16.x) i SQL Server 2025 (17.x).

zdarzenie rozszerzone summarized_oom_snapshot

Zdarzenie summarized_oom_snapshot rozszerzone jest częścią system_health sesji zdarzeń, aby uprościć wykrywanie zdarzeń braku pamięci. Każde summarized_oom_snapshot zdarzenie rozszerzone odpowiada wierszowi w pliku sys.dm_os_out_of_memory_events. Aby uzyskać więcej informacji, zobacz Blog: nowy sposób rozwiązywania problemów z błędami braku pamięci w a aparatze bazy danych.

Przykłady

Odp. Pobieranie wszystkich dostępnych zdarzeń OOM

Poniższy przykład zwraca wszystkie dane zdarzenia uporządkowane ostatnio dla aparatu bazy danych obsługującego aktualnie połączoną bazę danych.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Pobieranie najwyższych urzędów obsługi pamięci dla każdego zdarzenia OOM

Poniższy przykład zwraca podzbiór danych zdarzenia i rozszerza dane JSON w kolumnie top_memory_clerks . Każdy wiersz w zestawie wyników reprezentuje najwyższy urzędnik pamięci dla określonego zdarzenia 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. Pobieranie pul zasobów dla każdego zdarzenia OOM

Poniższy przykład zwraca podzbiór danych zdarzenia i rozszerza dane JSON w kolumnie top_resource_pools . Każdy wiersz w zestawie wyników reprezentuje górną pulę zasobów dla określonego zdarzenia 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;