SQL Server’da FTIFTS_SCHEDULER_IDLE_WAIT bekleme tipi, adından da anlaşılacağı üzere Full-Text Search (Tam Metin Arama) özelliğiyle doğrudan ilişkilidir.
Tıpkı daha önce incelediğimiz DISPATCHER_QUEUE_SEMAPHORE veya CLR_AUTO_EVENT gibi, bu da SQL Server’ın “iyi huylu” (benign) ve genellikle sistem boşta olduğu için ortaya çıkan bekleme tiplerinden biridir.
Bu bekleme tipi, Full-Text Search motorunun (Filter Daemon Host süreci) arka planda yeni bir görev gelmesini beklemesidir.
- FT: Full-Text (Tam Metin)
- IFTS: Integrated Full-Text Search (Entegre Tam Metin Arama)
- SCHEDULER_IDLE_WAIT: Zamanlayıcının (Scheduler) boşta (Idle) beklediğini ifade eder.
Full-Text Search servisi, indekslenecek yeni bir veri olup olmadığını kontrol eder. Eğer indekslenecek bir tablo değişikliği yoksa veya bir “Crawl” (tarama) işlemi aktif değilse, bu servis uyku moduna geçer. Bu uyku süresi boyunca FTIFTS_SCHEDULER_IDLE_WAIT sayacı artar.
Kesinlikle bir sorun değildir. Aslında bu değerin listenizde üst sıralarda olması, Full-Text Search özelliğinin sistem kaynaklarını gereksiz yere tüketmediğini ve efendi gibi köşesinde yeni bir iş gelmesini beklediğini gösterir.
SQL Server çalıştığı sürece bu servis arka planda “dinlemede” kalır. Sunucunuz 10 gündür açıksa ve bu süre zarfında sadece 1 saat Full-Text araması yapıldıysa, geri kalan 239 saat boyunca bu bekleme tipi birikecektir. Bu da onu sys.dm_os_wait_stats raporlarında en tepeye taşır.
Neredeyse hiçbir zaman bu bekleme tipi için bir aksiyon almanız gerekmez. Ancak Full-Text Search ile ilgili gerçek bir performans sorunu yaşıyorsanız (örneğin aramalar çok yavaşsa veya CPU çok yüksekse), şu bekleme tiplerine bakmalısınız:
- FTS_IFTS_FAILED: İndeksleme sırasında bir hata oluştuğunda görülür.
- FTS_IFTS_MUTEX: İçsel bir kilitlenme (race condition) olduğuna işaret edebilir.
- FTS_IFTSHC_MUTEX: İndeksleme kanalları arasındaki çakışmaları gösterir.
Bir performans analizi yaparken, bu gibi “gürültü” yapan beklemeleri filtrelemek en sağlıklı yöntemdir. Aksi takdirde, disk veya bellek darboğazı gibi gerçek sorunları gözden kaçırabilirsiniz.
SELECT wait_type,
wait_time_ms / 1000.0 AS Wait_Sec,
waiting_tasks_count
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN (
'FTIFTS_SCHEDULER_IDLE_WAIT', -- Full-Text Boşta
'DISPATCHER_QUEUE_SEMAPHORE', -- Dağıtıcı Boşta
'CLR_AUTO_EVENT', -- CLR Boşta
'LAZYWRITER_SLEEP', -- Bellek Temizleyici Uyku
'HADR_NOTIFICATION_DEQUEUE', -- Always On Bildirim Bekleme
'REQUEST_FOR_DEADLOCK_SEARCH' -- Deadlock Kontrolü Bekleme
)
ORDER BY wait_time_ms DESC;
Eğer FTIFTS_SCHEDULER_IDLE_WAIT listenin başındaysa, SQL Server’ınıza “Aferin, Full-Text motorun düzgünce dinleniyor” diyebilirsiniz.
Başka makalede görüşmek dileğiyle..
İsraf etmeyin. İsra-26
