MSSQL Server’da PWAIT Bekleme Tipi

SQL Server’da PWAIT_* (Preemptive Wait) bekleme tipleri, SQL Server’ın kendi zamanlayıcısı (scheduler) dışındaki bir işlemi gerçekleştirmek için İşletim Sistemine (Windows) kontrolü devrettiği durumlarda oluşur.

SQL Server normalde “Non-Preemptive” bir yapıdadır; yani her thread ne kadar süre çalışacağını kendi ayarlar. Ancak bazen bir Windows API’si çağırması gerektiğinde (dosya açma, şifreleme, ağ sorgusu vb.), SQL Server bu işlemin ne kadar süreceğini bilemez ve thread’i “Preemptive” moda geçirerek Windows’un bitirmesini bekler.

PWAIT beklemeleri genellikle SQL Server’ın dış dünya ile konuştuğu veya işletim sistemi seviyesinde özel yetkiler kullandığı anlarda artar. En yaygın alt tipleri şunlardır:

  • PWAIT_HADR_ACTION: Always On Availability Groups yapısında, replikasyon veya durum değişiklikleri sırasında Windows Cluster servisleriyle yapılan iletişimlerde görülür.
  • PWAIT_RESOURCE_SEMAPHORE_EX: Çok büyük sorgu belleği (Query Grant) talepleri sırasında işletim sistemiyle yapılan koordinasyonda oluşur.
  • PWAIT_DIRECT_LOG_IO: Doğrudan log yazma operasyonları sırasında disk alt yapısının işletim sistemi seviyesinde yanıt vermesini beklerken oluşur.
  • PWAIT_EXT_HP_ENUMERATOR: Genellikle donanım veya harici kütüphanelerle (external libraries) ilgili taramalarda görülür.

Bu bekleme tipi tek başına bir sorun değil, bir aracıdır. Asıl sorun, SQL’in dışarıdan beklediği yanıtın gecikmesidir.

A. Donanım ve Sürücü Kontrolleri

PWAIT beklemeleri genellikle alt yapısal sorunlara işaret eder.

  • BIOS ve Firmware: Sunucunun BIOS ayarlarının ve disk kontrolcü (HBA) firmware sürümlerinin güncel olduğundan emin olun.
  • Güç Planı: Windows güç planının “Yüksek Performans” (High Performance) olduğundan emin olun. “Dengeli” modda işletim sistemi çekirdekleri uykuya geçirebilir, bu da PWAIT sürelerini uzatır.

B. Always On ve Cluster Sağlığı

Eğer PWAIT_HADR tipi beklemeler görüyorsanız:

  • Windows Failover Cluster loglarını inceleyin.
  • Ağ kartı (NIC) sürücülerinin ve Cluster “Heartbeat” bağlantısının stabil olup olmadığını kontrol edin.

C. SQL Server Güncellemeleri

Bazı PWAIT beklemeleri SQL Server’ın içindeki kod hatalarından (bugs) kaynaklanabilir. Microsoft, Cumulative Update (CU) paketleri ile bu “gereksiz” beklemeleri sık sık düzeltmektedir. Mevcut sürümünüzün en güncel CU paketine sahip olduğunu doğrulayın.

Özetle

Bekleme TipiOlası Odak NoktasıÇözüm Önerisi
PWAIT_HADR_*Availability Groups / ClusterCluster loglarını ve ağ stabilitesini inceleyin.
PWAIT_DIRECT_LOG_IODisk I/O (Log Dosyası)Log diskindeki yazma gecikmesini (Latency) kontrol edin.
PWAIT_MD_RESERVE_*Metadata / Sistem Kataloglarıİstatistikleri güncelleyin, sistem dosyalarındaki yükü azaltın.

Eğer PWAIT beklemeleri sisteminizdeki toplam bekleme süresinin %10-15’inden fazlasını kaplıyorsa, SQL Server dışında (Windows, Disk, Network veya Antivirüs) bir darboğaz aramak en mantıklı adımdır.

Başka makalede görüşmek dileğiyle..

Ey iman edenler, sabırla ve namazla yardım dileyin. Gerçekten Allah, sabredenlerle beraberdir. Bakara Suresi, 153. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir