SQL Server’da WAITFOR, bir komutun veya işlemin belirli bir süre boyunca duraklatılmasını sağlayan bir deyimdir. Genellikle otomasyonlar, test senaryoları veya zaman ayarlı görevler için kullanılır.
Bu komut fiziksel bir “hata” veya “darboğaz” tipi değil, geliştiricinin isteğiyle oluşan kasıtlı bir geciktirmedir.
SQL Server’da iki ana kullanım şekli vardır:
1. Belirli Bir Süre Beklemek (DELAY)
Sorgunun ne kadar süre boyunca uyuyacağını belirtirsiniz.
- Format: hh:mm:ss (Maksimum 24 saat).
10 saniye bekledikten sonra sorguyu çalıştırır.
WAITFOR DELAY '00:00:10';
SELECT * FROM Employees;
2. Belirli Bir Saati Beklemek (TIME)
Sorgunun günün belirli bir saatine kadar beklemesini sağlar.
- Format: hh:mm:ss (24 saatlik format).
Gece 23:30 olana kadar işlemi başlatmaz
WAITFOR TIME '23:30:00';
EXEC sp_DailyReport;
Eğer bir izleme aracında (Activity Monitor veya SQL Profiler gibi) WAITFOR bekleme tipini görüyorsanız, bu genellikle şu anlama gelir:
- Kullanıcı Kaynaklı Duraklatma: Bir WAITFOR komutu çalışıyor demektir.
- Service Broker: SQL Server Service Broker kuyruklarını dinlerken (RECEIVE komutu ile) boş kuyrukta beklediğinde bu tipte bir bekleme kaydı oluşturur.
Dikkat Edilmesi Gerekenler:
- Bağlantı (Connection) İşgali: WAITFOR çalıştığı sürece o bağlantı (session) meşgul görünür. Çok fazla eşzamanlı WAITFOR kullanımı, bağlantı havuzunu (connection pool) doldurabilir.
- Transaction Riski: Eğer bir BEGIN TRANSACTION bloğu içinde WAITFOR kullanırsanız, bekleme süresi boyunca tüm kilitler (locks) tutulmaya devam eder. Bu da ciddi Blocking (engelleme) sorunlarına yol açar.
Özetle
| Özellik | Açıklama |
| Grup | User Wait (Kullanıcı Beklemesi) |
| Amaç | İş akışını senkronize etmek veya geciktirmek. |
| Maksimum Süre | 24 Saat. |
| CPU Tüketimi | Bekleme sırasında neredeyse sıfırdır. |
Başka bir makalede görüşmek dileğiyle..
“O gün, başlarını dikerek koşacaklar, gözleri kendilerine bile dönmeyecek ve gönülleri bomboş kalacaktır.”İbrahim-43
