Bu makalede, SQL Server Trace Flag ne olduğunu, nasıl kullanıldığını ve bazı yaygın senaryolarda nasıl faydalı olabileceğini inceleyeceğiz.
Trace Flag Nedir ?
SQL Server’ın davranışını değiştiren ve çeşitli senaryolarda performansı artıran veya hata ayıklama sürecini kolaylaştıran özel ayarlar olarak tanımlanabilir. Kullanım amaçları genel anlamda kriz anında ihtiyaçlara göre Trace Flags’ler eklenip problemi çözmeye yönelik işlemler yapılabilir.
SQL Server Trace Flag seçerken dikkatli olmak önemlidir. Yanlış bir Trace flag etkinleştirilmesi, beklenmedik davranış değişikliklerine veya performans sorunlarına neden olabilir. Bu nedenle, her Trace Flag etkilerini ve kullanım senaryolarını bilmek önemlidir. Trace Flag etkinleştirildikten sonra sistem üzerindeki etkilerini izlemek ve değerlendirmek de önemlidir.
Trace Flag nasıl aktif edebiliriz. Bağzı Trace Flag’ ler Service Restart edildikten sonra devreye girecektir.
Aktif etmek için;
SQL Server Configuration Manager/ SQL Server Services/ SQL Server (InstanceName)
Instance’a sağ tıklayıp Properties diyoruz ve Startup Parameters kısmına geliyoruz burada 3 tane System tarafından Default olarak gelen Trace Flag’ler bulunmaktadır.
Bunlar;
-d (Master veritabanı dosyasının yolunu/ master.mdf) SQL Server’ın sistem yapılandırma bilgilerini içerir ve sunucunun başlatılmasında kritik bir rolü vardır.
-e (hata günlük dosyasının yolu/ ERRORLOG) Hata günlüğü dosyası, SQL Server başlatma,durdurma, hatamesajları ve önemli olaylar hakkında bilgi içerir.
-I (master veritabanı işlem günlüğü dosyasının yolu/mastlog.ldf) Master veritabanın işlem günlüklerini saklar ve veri tabanı kurtarma işlemlerinde kullanılır.
Trace flag eklerken Specify a startup parameter kısmına aşağıdaki gibi başına –T…. yazılıp Add butonuna tıklanılır.
Existing Parameters kısmında TRACE FLAG eklenmiş olacaktır.
Şimdi sizlerle problem anında kullanılan Trace Flagler örneğini paylaşacağım.
Problem 1-) Beklenmedik bir şekilde yüksek CPU kullanımı yaşandığında, SQL Server’ın CPU kullanımını optimize etmek için hızlı bir çözüm bulmanız gerektiğinde Trace Flag 8048 aktif etmeniz fayda sağlayacaktır.
-T8048 yüksek CPU kullanımı yaşandığında, SQL Server’ın CPU kullanımını optimize etmek için hızlı bir çözüm sağlayabilir.
Problem 2-) Bir veritabanı sunucusunda aşırı miktarda disk I/O (Input/Output) aktivitesi meydana geliyor ve bu durum, diğer işlemlerin performansını olumsuz etkiliyor.
-T 830 (Page Free Space ) kullanarak, veritabanı sunucusundaki aşırı disk I/O aktivitesini azaltabiliriz.
Problem 3-) SQL Server kapandığında veya çöktü
-T 3608 Bu trace flag, SQL Server hizmeti başlatılırken, veritabanı sistem veritabanını açmadan önce başlatmayı engeller. Böylece, SQL Server çöktüğünde, hizmeti yeniden başlattığınızda kullanıcı veritabanları açılmaz ve, kurtarma işlemlerinin daha kolay yapılmasını olanak sağlar.
Kriz durumlarında trace flag’lerin kullanılması, sorunun geçici olarak giderilmesine yardımcı olabilirken, uzun vadeli çözümler için dikkatli bir planlama ve analiz gereklidir.
Trace Flag’ler sadece kriz anında değil başka durum ve sebeplerden dolayı kullanılabilir. Bunlardan tabiki en başta geleni SQL Server Sürümleridir.
Örnek vermek gerekir ise;
2017 SQL Server Sürümünde
-T 1117 TempDB’ Performansını optimize etmek için manuel olarak etkinleştirilir.
-T 2371 Otomatik İstatistik güncelleme eşiklerini dinamik olarak ayarlar.
2019 SQL Server Sürümün ‘de bu Trace Flaglar varsayılan olarak etkin hale getirilmiştir.
Yaygın olarak kullanılan Trace Flag’lerin bazıları:
T 176 – Online On Partition Table: Partition işleminde bölümlemeye olanak sağlar Wide Pages(Geniş sayfaların) kullanımını devre dışı bırakır. Performansa etki eder.
T 1117 – Otomatik Büyüyen Dosyalar: Bir veritabanının dosyalarının(ndf) eşit şekilde büyütülmesini sağlar. Örneğin, bir veritabanının bir dosyası dolup diğerleri boş kalıyorsa, bu bayrak etkinleştirildiğinde tüm dosyalar eşit şekilde büyütülür.
T 1118 – Tek Dosya Grubu Ataması: Tempdb’ye paralel veri dosyası oluştururken tek dosya grubu atamasını zorlar. Bu, tempdb performansını artırabilir.
T 2371 – İndex Rebuild Statistikleri: İndex yeniden oluşturması sırasında, önceki index’in istatistiklerinin korunmasını sağlar. Bu, bir index’i yeniden oluştururken performans sorunlarını azaltabilir.
T 4199 – Sorgu Optimizasyonu Düzeltmeleri: Sorgu optimizerindeki düzeltmeleri etkinleştirir ve genellikle performansı artırır.
T 3226 – Backup Log Yok Sayılması: Bu bayrak, yedekleme işlemi sırasında, log yedekleme işlemlerinin LDF yazılmasını önler. Bu, yedekleme işlemleri sırasında LDF(Log data file)’ in gereksiz şekilde büyümesini önleyebilir.
T 1448 – Replicasyon Log Reader: Subscription yapılan sunucu ile alınan logların her zaman Synchronization durumdan Synchronized eşit olmasını sağlar.
T 174 – Sogu Planlarının Depolanma Sayısı: SQL Server ‘da oluşan planların sayısı default değeri 160.000 tutar ve gelen yeni bir sorgu planı için en eski olanı siler bu Trace Flag bu sayıyı 4 katına 650.000 değerine çıkarır.
T 902 – Sorgu Optimizasyonları: 2014 ve sonraki sürümlerde sorgu optimizisyonu değiştirilmiştir. Bağzı durumlarda performans sorunlarına neden olmaktadır. Bu sebepten dolayı eski sürüm ile uyumlu hale getirmeye yarar.
T 7745 – SQL Server Kapandığında Sorguları Diske yazma: SQL Server kapandığında çalışan sorguların veri kaybı olmaması için sorguların diske yazılmasını sağlar.
T 7752 – Veri tabanı ayağa kalkmasının tamamlanmasını beklememek: Veri tabanını yükleme esnasında tamamamen yüklenmesini beklememek için kullanılan Trace Flagdır.
T 1222 – SQL Server ‘da Deadlock’ların Hakkında bilgi: Sisteminizde yaşanılan Deadlock hakkında XML Formatında Transaction log’a yazar. Deadlock’ ları engellemez.
Bu makalede, SQL Server Trace Flagların ne olduğunu, nasıl kullanıldığını ve yaygın senaryolarda nasıl faydalı olabileceğini inceledik. Trace Flag seçimi ve uygulanması, SQL Server yönetiminde önemli bir beceri ve anlayış gerektirir. Ancak doğru şekilde kullanıldığında, bu Trace Flagler performansı artırma ve hata ayıklama süreçlerini iyileştirme potansiyeli büyüktür.
0 Yorum