SQL Server Buffer Latch Zaman Aşımı: Yavaş Disk, İşletim Sistemi Bellek Baskısı ve TempDB Çekişmesi
Yavaş depolama G/Ç veya max server memory'nin işletim sistemine RAM bırakmaması nedeniyle buffer latch zaman aşımı; Lock Pages in Memory ve tempdb çoklu dosya mimarisi.
Operasyonel Doğrulama & Güvenilirlik Standardı
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
Sorgular donar ve hata loglarında buffer latch zaman aşımı uyarısı basılır:
Msg 845, Level 17, State 1, Line 1
Time-out occurred while waiting for buffer latch type 2 for page (1:12345).
Msg 701, Level 17, State 1, Line 1
There is insufficient system memory in resource pool 'internal' to run this query.▸Sahada Ne Görürsün?
Disk gecikmesi (disk latency) 100ms'nin üzerine fırlar. PAGEIOLATCH_SH veya TempDB tahsis sayfalarında (PAGELATCH_UP GAM/SGAM) devasa bekleme süreleri oluşur.
▸Kök Neden Matrisi
| Olasılık | Kök Neden | Açıklama |
|---|---|---|
| %50 | Aşırı Yavaş Disk Alt Yapısı | Veritabanı sayfası diskten bellek havuzuna yüklenirken depolama yanıt vermemiş, latch bekleme süresi dolmuştur. |
| %30 | `max server memory` RAM Bırakmamış | SQL Server tüm RAM'i rehin almış, Windows paging yapmaya başlamış ve sanal makine bellek balonu (ballooning) patlamıştır. |
| %20 | TempDB Allocation Çekişmesi | Tek dosyalı TempDB üzerinde GAM/PFS sayfalarında çekişme oluşmuştur. |
▸ACİL RUNBOOK (0-5dk)
-- 1. Fiziksel bellek durumunu ve işletim sistemine kalan RAM'i gör
SELECT (physical_memory_kb / 1024 / 1024) AS Physical_GB,
(available_physical_memory_kb / 1024 / 1024) AS Available_GB
FROM sys.dm_os_sys_memory;
-- 2. Acil müdahale: SQL Server bellek tavanını düşürerek OS'i rahatlat
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
-- 64GB sunucuda 50GB'a çek:
EXEC sp_configure 'max server memory', 51200; RECONFIGURE;
-- 3. En yüksek latch beklemelerini incele
SELECT wait_type, waiting_tasks_count, wait_time_ms
FROM sys.dm_os_wait_stats
WHERE wait_type LIKE '%LATCH%' ORDER BY wait_time_ms DESC;▸KALICI BLUEPRINT
- 1Lock Pages in Memory (LPIM): SQL Server servis hesabına Windows üzerinde LPIM yetkisi verilerek bellek sayfalarının diske taşınması (paging) engellenmelidir.
- 2TempDB Çoklu Dosya Standardı: TempDB veri dosyası sayısı CPU çekirdek sayısına eşitlenmeli (maksimum 8 dosya) ve hepsi eşit boyutta açılmalıdır.
- 3Ayrı Diskler: TempDB ve Data dosyaları mutlaka ayrı fiziksel NVMe sürücülerde tutulmalıdır.
▸Doğrulama
SELECT wait_type, waiting_tasks_count, wait_time_ms / 1000 AS wait_time_seconds
FROM sys.dm_os_wait_stats WHERE wait_type IN ('PAGEIOLATCH_SH', 'PAGELATCH_UP');Diğer Veritabanı Hata Teşhisleri
Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.
SQL Server Error 18456: State Kodlarına Göre Gerçek Neden
18456 hatasında State numarası gerçek nedeni söyler. State 5, 8, 11, 18, 38 ve 40 için ayrı çözümler, ERRORLOG okuma komutları.
SQL Server Error 1205 Deadlock: Grafiği Bulma ve Önleme
SQL Server 1205 hatasında deadlock grafiğini system_health oturumundan çıkarma, kurban seçimini anlama ve kalıcı önleme yöntemleri.
SQL Server Pool Timeout: Bağlantı Havuzu Tükenmesi Çözümü
"Timeout expired prior to obtaining a connection from the pool" hatasının komut zaman aşımından farkı, sızıntı tespiti ve .NET tarafında kalıcı düzeltme.