Aracılığıyla paylaş


Bellek kıtlığı olayları izlemek için sys.dm_os_out_of_memory_events ifadesini kullanın.

Şunlar için geçerlidir:Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric'te SQL veritabanı

Bellek yetersiz (OOM) olayları kümesini döndürür.

Azure SQL Veritabanı'ndaki yetersiz bellek koşulları hakkında daha fazla bilgi için bkz. Azure SQL Veritabanı'nda yetersiz bellek hatalarını giderme.

Sütun adı Veri türü Açıklama
event_time tarih ve saat OOM olay zamanı. Null olamaz.
oom_cause tinyint OOM kök nedenini gösteren sayısal değer. OOM nedeni buluşsal bir algoritma tarafından belirlenir ve sonlu bir güvenilirlik derecesiyle sağlanır. Null olamaz.
oom_cause_desc nvarchar(30) öğesinin açıklaması oom_cause. Null olamaz.
0. UNKNOWN - OOM nedeni belirlenemedi
1. HEKATON_POOL_MEMORY_LOW - In-Memory OLTP için kullanılan kaynak havuzunda yetersiz bellek. Daha fazla bilgi için bkz. OLTP In-Memory izleme.
2. MEMORY_LOW - Veritabanı altyapısı işlemi için yeterli bellek yok
3. OS_MEMORY_PRESSURE - İşletim sisteminden kaynaklanan dış bellek baskısından dolayı OOM
4. OS_MEMORY_PRESSURE_SQL - Diğer veritabanı altyapısı örneklerinden kaynaklanan dış bellek baskısından dolayı OOM
5. NON_SOS_MEMORY_LEAK - SOS olmayan bellekteki bir sızıntı nedeniyle OOM, örneğin yüklenen modüller
6. SERVERLESS_MEMORY_RECLAMATION - Sunucusuz veritabanında bellek geri kazanma ile ilgili OOM
7. MEMORY_LEAK - SOS belleğindeki bir sızıntı nedeniyle OOM
8. SLOW_BUFFER_POOL_SHRINK - Arabellek havuzunun bellek baskısı altında belleği yeterince hızlı bırakmaması nedeniyle OOM
9. INTERNAL_POOL - İç kaynak havuzunda yetersiz bellek
10. SYSTEM_POOL - Sistem kaynak havuzunda yetersiz bellek
11. QUERY_MEMORY_GRANTS - Sorgular tarafından tutulan büyük bellek izinleri nedeniyle OOM
12. REPLICAS_AND_AVAILABILITY - SloSecSharedPool kaynak havuzundaki iş yükleri nedeniyle OOM
available_physical_memory_mb Int Megabayt cinsinden kullanılabilir fiziksel bellek. Null olamaz.
initial_job_object_memory_limit_mb Int Veritabanı altyapısı başlatma sırasında megabayt cinsinden iş nesnesi bellek sınırı. İş Nesneleri hakkında daha fazla bilgi için bkz . Kaynak idaresi. Nullable.
current_job_object_memory_limit_mb Int megabayt cinsinden iş nesnesi geçerli bellek sınırı. Nullable.
process_memory_usage_mb Int Örneğe göre megabayt cinsinden toplam işlem belleği kullanımı. Null olamaz.
non_sos_memory_usage_mb Int SOS tarafından oluşturulan iş parçacıkları, SOS dışı bileşenler tarafından oluşturulan iş parçacıkları, yüklenen DLL'ler vb. dahil olmak üzere megabayt cinsinden SOS dışı kullanım. Null değer atanamaz.
committed_memory_target_mb Int SOS megabayt cinsinden bellek hedeflemektedir. Null olamaz.
committed_memory_mb Int SOS megabayt cinsinden kaydedilmiş bellek. Null olamaz.
allocation_potential_memory_mb Int Yeni ayırmalar için veritabanı altyapısı örneğinde megabayt cinsinden kullanılabilir bellek. Null olamaz.
oom_factor tinyint Yalnızca iç kullanım için OOM olayıyla ilgili ek bilgiler sağlayan bir değer. Null olamaz.
oom_factor_desc nvarchar(30) öğesinin açıklaması oom_factor. Yalnızca dahili kullanım için. Null olamaz.
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) Her havuz için bellek kullanım istatistikleri de dahil olmak üzere bellek yetersiz kaynak havuzları. Bu bilgiler bir JSON değeri olarak sağlanır. Nullable.
top_memory_clerks nvarchar(4000) Her bir katibin bellek kullanım istatistikleri de dahil olmak üzere bellek tüketimine göre en iyi bellek katipleri. Bu bilgiler bir JSON değeri olarak sağlanır. Nullable.
top_resource_pools nvarchar(4000) Her kaynak havuzu için bellek kullanım istatistikleri de dahil olmak üzere bellek tüketimine göre en iyi kaynak havuzları. Bu bilgiler bir JSON değeri olarak sağlanır. Nullable.
possible_leaked_memory_clerks nvarchar(4000) Belleği sızdıran bellek memurları. Buluşsal yöntemlere dayalıdır ve sonlu bir güven derecesi ile sağlanır. Bu bilgiler bir JSON değeri olarak sağlanır. Nullable.
possible_non_sos_leaked_memory_mb Int Varsa megabayt cinsinden SOS olmayan bellek sızdırıldı. Buluşsal yöntemlere dayalıdır ve sonlu bir güven derecesi ile sağlanır. Nullable.

İzinler

Azure SQL Yönetilen Örneğinde izin gerekir VIEW SERVER PERFORMANCE STATE .

SQL Veritabanı Temel,S0 ve S1 hizmet hedeflerinive elastik havuzlardaki veritabanları için, sunucu yöneticisi hesabı, Microsoft Entra yönetici hesabı veya ##MS_ServerPerformanceStateReader##sunucu rolü üyeliği gereklidir. Diğer tüm SQL Veritabanı hizmet hedeflerinde, veritabanında VIEW DATABASE PERFORMANCE STATE izni veya ##MS_ServerPerformanceStateReader## sunucu rolü üyeliği gereklidir.

Açıklamalar

Bu görünümdeki her satır, veritabanı altyapısında oluşan bellek yetersiz (OOM) olayını temsil eder. Tüm OOM olayları yakalanamayabilir. Daha yeni OOM olayları oluştukça eski OOM olayları sonuç kümesinden kaybolabilir. Sonuç kümesi, veritabanı altyapısının yeniden başlatmalarında kalıcı olmaz.

Şu anda bu DMV görünür ancak SQL Server 2022 (16.x) ve SQL Server 2025 (17.x)'te desteklenmemektedir.

genişletilmiş olayı summarized_oom_snapshot

Genişletilmiş summarized_oom_snapshot olay, bellek dışı olayları algılamayı system_health basitleştirmek için olay oturumunun bir parçasıdır. Genişletilmiş her summarized_oom_snapshot olay içindeki sys.dm_os_out_of_memory_eventsbir satıra karşılık gelir. Daha fazla bilgi için bkz . Blog: Veritabanı altyapısındaki yetersiz bellek hatalarını gidermenin yeni bir yolu.

Örnekler

A. Tüm kullanılabilir OOM olaylarını alma

Aşağıdaki örnek, şu anda bağlı olan veritabanını barındıran veritabanı altyapısı için en son zamana göre sıralanmış tüm olay verilerini döndürür.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Her OOM olayı için en iyi bellek katiplerini alma

Aşağıdaki örnek olay verilerinin bir alt kümesini döndürür ve sütundaki top_memory_clerks JSON verilerini genişletir. Sonuç kümesindeki her satır, belirli bir OOM olayı için en iyi bellek katibini temsil eder.

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. Her OOM olayı için en iyi kaynak havuzlarını alma

Aşağıdaki örnek olay verilerinin bir alt kümesini döndürür ve sütundaki top_resource_pools JSON verilerini genişletir. Sonuç kümesindeki her satır, belirli bir OOM olayı için en üstteki kaynak havuzunu temsil eder.

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;