Bagikan melalui


sys.dm_os_out_of_memory_events (peristiwa kehabisan memori)

Berlaku untuk:Database Azure SQLInstans Terkelola Azure SQLDatabase SQL di Microsoft Fabric

Mengembalikan serangkaian peristiwa kehabisan memori (OOM) terbaru.

Untuk informasi selengkapnya tentang kondisi kehabisan memori di Azure SQL Database, lihat Memecahkan masalah kesalahan kehabisan memori di Azure SQL Database.

Nama kolom Jenis data Deskripsi
event_time tanggalwaktu Waktu kejadian OOM. Tidak dapat diubah ke null.
oom_cause kecil Nilai numerik yang menunjukkan akar penyebab OOM. Penyebab OOM ditentukan oleh algoritma heuristik dan disediakan dengan tingkat keyakinan yang terbatas. Tidak dapat diubah ke null.
oom_cause_desc nvarchar(30) oom_causeDeskripsi . Tidak dapat diubah ke null.
0. UNKNOWN - Penyebab OOM tidak dapat ditentukan
1. HEKATON_POOL_MEMORY_LOW - Memori yang tidak mencukupi di kumpulan sumber daya yang digunakan untuk OLTP Dalam Memori. Untuk informasi selengkapnya, lihat Memantau OLTP Dalam Memori.
2. MEMORY_LOW - Memori tidak cukup tersedia untuk proses mesin database
3. OS_MEMORY_PRESSURE - OOM karena tekanan memori eksternal dari sistem operasi
4. OS_MEMORY_PRESSURE_SQL - OOM karena tekanan memori eksternal dari instans mesin database lainnya
5. NON_SOS_MEMORY_LEAK - OOM karena kebocoran memori non-SOS, misalnya, modul yang dimuat
6. SERVERLESS_MEMORY_RECLAMATION - OOM terkait dengan reklamasi memori dalam database tanpa server
7. MEMORY_LEAK - OOM karena kebocoran memori SOS
8. SLOW_BUFFER_POOL_SHRINK - OOM karena kumpulan buffer tidak melepaskan memori cukup cepat di bawah tekanan memori
9. INTERNAL_POOL - Memori yang tidak mencukup di kumpulan sumber daya internal
10. SYSTEM_POOL - Memori tidak cukup dalam kumpulan sumber daya sistem
11. QUERY_MEMORY_GRANTS - OOM karena hibah memori besar yang dipegang oleh kueri
12. REPLICAS_AND_AVAILABILITY - OOM karena beban kerja di kumpulan sumber daya SloSecSharedPool
available_physical_memory_mb Int Memori fisik yang tersedia, dalam megabyte. Tidak dapat diubah ke null.
initial_job_object_memory_limit_mb Int Batas memori objek pekerjaan pada startup mesin database, dalam megabyte. Untuk informasi selengkapnya tentang Objek Pekerjaan, lihat Tata kelola sumber daya. Dapat bernilai null.
current_job_object_memory_limit_mb Int Batas memori objek pekerjaan saat ini, dalam megabyte. Dapat bernilai null.
process_memory_usage_mb Int Total penggunaan memori proses dalam megabyte oleh instans. Tidak dapat diubah ke null.
non_sos_memory_usage_mb Int Penggunaan non-SOS dalam megabyte, termasuk utas yang dibuat SOS, utas yang dibuat oleh komponen non-SOS, DLL yang dimuat, dll. Tidak dapat diubah ke null.
committed_memory_target_mb Int Memori target SOS dalam megabyte. Tidak dapat diubah ke null.
committed_memory_mb Int SOS menerapkan memori dalam megabyte. Tidak dapat diubah ke null.
allocation_potential_memory_mb Int Memori tersedia untuk instans mesin database untuk alokasi baru, dalam megabyte. Tidak dapat diubah ke null.
oom_factor kecil Nilai yang menyediakan informasi tambahan yang terkait dengan peristiwa OOM, hanya untuk penggunaan internal. Tidak dapat diubah ke null.
oom_factor_desc nvarchar(30) oom_factorDeskripsi . Hanya untuk penggunaan internal. Tidak dapat diubah ke 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) Kumpulan sumber daya yang kehabisan memori, termasuk statistik penggunaan memori untuk setiap kumpulan. Informasi ini disediakan sebagai nilai JSON. Dapat bernilai null.
top_memory_clerks nvarchar(4000) Petugas memori teratas berdasarkan konsumsi memori, termasuk statistik penggunaan memori untuk setiap petugas. Informasi ini disediakan sebagai nilai JSON. Dapat bernilai null.
top_resource_pools nvarchar(4000) Kumpulan sumber daya teratas berdasarkan konsumsi memori, termasuk statistik penggunaan memori untuk setiap kumpulan sumber daya. Informasi ini disediakan sebagai nilai JSON. Dapat bernilai null.
possible_leaked_memory_clerks nvarchar(4000) Pegawai memori yang telah membocorkan memori. Berdasarkan heuristik dan diberikan tingkat keyakinan yang terbatas. Informasi ini disediakan sebagai nilai JSON. Dapat bernilai null.
possible_non_sos_leaked_memory_mb Int Memori non-SOS bocor dalam megabyte, jika ada. Berdasarkan heuristik dan diberikan tingkat keyakinan yang terbatas. Dapat bernilai null.

Izin

Pada Azure SQL Managed Instance, memerlukan VIEW SERVER PERFORMANCE STATE izin.

Pada tujuan layanan SQL Database Basic, S0 Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE PERFORMANCE STATE pada database, atau keanggotaan dalam ##MS_ServerPerformanceStateReader## peran server diperlukan.

Keterangan

Setiap baris dalam tampilan ini mewakili peristiwa kehabisan memori (OOM) yang telah terjadi di mesin database. Tidak semua peristiwa OOM mungkin ditangkap. Peristiwa OOM yang lebih lama dapat menghilang dari hasil yang ditetapkan saat peristiwa OOM yang lebih baru terjadi. Kumpulan hasil tidak dipertahankan di seluruh mulai ulang mesin database.

Saat ini, DMV ini terlihat tetapi tidak didukung di SQL Server 2022 (16.x) dan SQL Server 2025 (17.x).

peristiwa summarized_oom_snapshot diperluas

Peristiwa summarized_oom_snapshot yang diperluas adalah bagian system_health dari sesi peristiwa untuk menyederhanakan deteksi peristiwa kehabisan memori. Setiap summarized_oom_snapshot peristiwa yang diperluas sesuai dengan baris di sys.dm_os_out_of_memory_events. Untuk informasi selengkapnya, lihat Blog: Cara baru untuk memecahkan masalah kesalahan di luar memori di mesin database.

Contoh

Sebuah. Mendapatkan semua peristiwa OOM yang tersedia

Contoh berikut mengembalikan semua data peristiwa yang diurutkan berdasarkan waktu terbaru untuk mesin database yang menghosting database yang saat ini tersambung.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Dapatkan pegawai memori teratas untuk setiap peristiwa OOM

Contoh berikut mengembalikan subset data peristiwa dan memperluas data JSON di top_memory_clerks kolom. Setiap baris dalam tataan hasil mewakili petugas memori teratas untuk peristiwa OOM tertentu.

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. Mendapatkan kumpulan sumber daya teratas untuk setiap peristiwa OOM

Contoh berikut mengembalikan subset data peristiwa dan memperluas data JSON di top_resource_pools kolom. Setiap baris dalam tataan hasil mewakili kumpulan sumber daya teratas untuk peristiwa OOM tertentu.

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;