MSSQL Server’da SQLTRACE_BUFFER_FLUSH Bekleme Tipi

SQL Server’da SQLTRACE_BUFFER_FLUSH bekleme tipi, sistemde çalışan bir SQL Trace (genellikle SQL Server Profiler) veya bir Extended Event (XEvent) oturumunun topladığı verileri diske veya ağa yazmaya çalışırken oluşur.
Bu bekleme tipi göründüğünde SQL Server aslında şunu söyler: “İzleme verilerini bellekteki (buffer) geçici alana topladım, ancak bu verileri kalıcı hedefe yazma hızım, verinin üretim hızına yetişemiyor.”

Bu beklemenin arkasında genellikle arka planda unutulmuş veya çok agresif yapılandırılmış izleme mekanizmaları yatar:

  • Aktif SQL Server Profiler Oturumları: Profiler aracı, veriyi istemci tarafına (kendi bilgisayarınıza) çekerek çalışır. Eğer ağ yavaşsa veya istemci bilgisayar veriyi işleyemiyorsa, sunucu üzerinde bu bekleme tipi tavan yapar.
  • Aşırı Veri Üreten Trace/XEvent: Filtreleme yapmadan “her şeyi” (örneğin her Lock:Acquired olayını) izlemeye çalışmak, devasa miktarda veri üretir.
  • Yavaş Disk (I/O) Performansı: İzleme dosyalarının (.trc veya .xel) yazıldığı disk yavaşsa veya yoğun kullanım altındaysa, buffer (tampon bellek) hızlıca boşaltılamaz.
  • Varsayılan İzleme (Default Trace): SQL Server’ın kendi iç mekanizması için tuttuğu varsayılan izleme dosyaları bazen disk darboğazıyla birleşince bu beklemeyi tetikleyebilir.

Çoğu durumda SQLTRACE_BUFFER_FLUSH performansı felç eden “birincil” sorun değildir; ancak sistemde gereksiz bir yük olduğunu gösterir. Eğer bu bekleme süresi toplam bekleme süreleri içinde çok yüksek bir yüzdeye sahipse, sunucunun genel yanıt verme süresini (throughput) olumsuz etkileyebilir.

Eğer bu bekleme tipiyle sık karşılaşıyorsanız şu adımları izleyebilirsiniz:
* Profiler Kullanımını Bırakın: SQL Server Profiler artık “deprecated” (eskimiş) bir teknolojidir ve sunucuya çok yük bindirir. Bunun yerine çok daha hafif olan Extended Events (XEvents) kullanmaya geçin.
* Filtreleri Daraltın: Sadece belirli bir veritabanını, kullanıcıyı veya belirli bir süreden uzun süren sorguları izleyin. Gereksiz olayları (events) izleme listesinden çıkarın.
* Aktif Trace’leri Kontrol Edin: Sunucuda çalışan aktif izleme oturumlarını şu sorguyla görebilirsiniz:

SELECT * FROM sys.traces;

Eğer ihtiyacınız olmayan bir status = 1 (aktif) izleme varsa, sp_trace_setstatus ile durdurun.
* Disk Performansını İyileştirin: İzleme dosyalarını veritabanı dosyalarının (.mdf/.ldf) bulunduğu diskten farklı ve hızlı bir diske yönlendirin.

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

Anne babaya kaba davranmayın İsra-23

Author: Yunus YÜCEL

Bir yanıt yazın

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