DTA (Database Engine Tuning Advisor) ile Önerileri Tespit Etmek

DTA (Database Engine Tuning Advisor) ile Önerileri Tespit Etmek

Bu yazımızda sebebini bulamadığınız veritabanı hatalarını DTA ile bulmayı öğreneceğiz

İçinde bulunduğumuz bilgi çağı döneminde internet şüphesiz ki en önemli iletişim aracıdır. Zamanla günümüze kadar olan gelişmelerde internet git gide hızlanmakta olup cihaz sayısı her gün daha da fazla artmaktadır. İnterneti aktif olarak kullanan insanların en önemli kriterlerinden biri ise kesinlikle hız olmuştur. Alışveriş yaparken, İnternet sitesini ziyaret ederken hatta günlük hayatta bile hız, pratiklik tartışılmaz bir derecede önemli hale gelmiştir ve rekabeti aslında bu kavram belirlemektedir. Bu talebe cevap verebilmek için pratik, hızlı, güçlü yapılandırılmış sistemlere ihtiyaç duyulmaktadır.

Büyüyen verilerin zamanla en büyük problemi performans olmaktadır. Yüzlerce, binlerce ve hatta milyonlarca insana sunduğunuz hizmetlerin taleplere çok hızlı cevap verebilmesi hizmetinizin geleceği ile alakalı en önemli hususlardan bir tanesidir.

Şuan varsayalım ki bir e-ticaret sistemimiz mevcut ve ayda milyonlarca insana hizmet vermektesiniz. Bu hizmetiniz Microsoft SQL veritabanı sistemi ile desteklemekte olup zamanla büyüyen verileriniz performans problemi yaratmaya başladı. Performans problemini veritabanı açısından ele almak istediniz fakat index ve statistic konularına pek de hakim değilsiniz. O zaman yardımınıza DTA (Database Engine Tuning Advisor) aracımız yetişiyor. Bu aracımız sizler için önceden toplanan istatistikleri değerlendirir ve önerilerde bulunur. Microsoft SQL ürünü ile birlikte gelmektedir. Şimdi DTA aracımızı biraz daha tanıyalım …

Database Engine Tuning Advisor Nedir ?

Database Engine Tuning Advisor Microsoft tarafından geliştirilen Microsoft SQL ürünü ile birlikte gelen bir yardımcı araçtır. Amacı önceden toplanan verileri yorumlayıp önerilerde bulunarak performans arttırmayı amaçlar.

Veri sayısı arttıkça performans problemi baş göstermeye başlayacaktır. Bunun için tablolarınıza indexleme yapısını getirmeniz gerekmektedir. Indexleme işlemi yapabilmek için çok hassas davranmak gerekmektedir. İhtiyacı doğru tespit edip metodu doğru alanlara uygulamanız gerekmektedir. Bu iş için yeteri kadar bilginiz ve tecrübeniz yok ise yardımınıza Database Engine Tuning Advisor geliyor.

Ben uygulamalarım için Northwind veritabanını kullanacağım. Sizlere bu veritabanı üzerinden örnekler vereceğim. Veritabanını temin etmek için buraya uğrayabilirsiniz

Öncelikle bu işlemi yapabilmek için bir trace dosyası oluşturmak zorundayız. Bunu da SQL Server Profiler ile yapabilirizSQL Server Management Studio içinde iken Tools -> SQL Server Profiler yolundan izleme aracını açtığımızda bizi bağlantı penceresi karşılayacaktır. Burada gerekli bilgilerimiz ile bağlantı işlemini sağladıktan sonra File -> New Trace yolunu izleyerek yeni bir izleme dosyası oluşturuyoruz.

Penceremiz açıldıktan sonra aşağıdaki ayarlarımızı uygulayarak izlemeyi başlatıyoruz ve aynı zamanda bu izlemeyi .trc uzantılı bir izleme dosyasına aktarıyoruz.

Run butonuna bastıktan sonra izleme işlemimiz başlayacaktır ve aşağıdaki gibi bir görüntü ile hareketleri anlık olarak izleyebileceğiniz sayfaya geleceksinizdir.

Profiler açık durmaya devam ederken ben biraz hazırladığım sorgular ile istatistik yaratmaya çalışacağım. Bunu yapma sebebim ise Database Engine Tuning Advisor aracına sorgulama istatistiklerini çıkarması için yardımcı olmak.

Not : Eğer ki bu işlemi aktif kullanılan bir proje için yapıyorsanız sadece izleme dosyasının dolmasını beklemek işinizi görecektir.

Birkaç sorgulamayı üst üste çalıştırarak istatistik yaratmaya başladım. Bu sorguları çalıştırdığım anda Profiler izleme dosyasına bunları kayıt etmektedir.

Şimdi istatistik oluşturma işlemimiz bittiğine göre artık analiz kısmına geçebiliriz.

Database Engine Tuning Advisor (DTA) isimli aracı kullanarak elimizdeki istatistiklere göre analiz yaparak index önerisinde bulunmasını sağlayacağız. Bu araca SQL Server Management Studio içinde Tools -> Database Engine Tuning Advisor menü yolundan ulaşılabilir.

Aracı çalıştırdığımızda bizi ilk olarak bağlantı penceresi karşılıyor bu pencereden ilgili sunucudaki bilgilerimizle bağlantımızı sağlıyoruz. Sonra ise otomatik olarak yeni bir analiz işlemi penceresi açılıyor. Analiz işlemi başlatmak istediğimiz veritabanını şekilde görüldüğü gibi seçiyoruz. Workload alanında File tipini seçerek sağ taraftaki mercek butonuna basarak daha önceden oluşturduğumuz izleme yani trace dosyamızın yolunu gösteriyoruz. Buradaki amaç analiz aracına gerekli istatistiği vermektir.

Fakat bunu bütün tablolar için yapmak istemezseniz aşağıdaki yöntemle istediğiniz tabloları seçebilirsiniz.

Bu işlemi yaptıktan sonra ufak birkaç ayar daha yapmamız gerekmektedir. Tuning Options sekmesine geçerek gerekli analiz ayarlarını yapılandıracağız. Limit tuning time seçeneği ile analizin çalışacağı maksimum bir süre belirledim bunu yapma amacım ise çabuk sonuç almak içindir. Siz bu seçeneği izleme dosyanızın boyutuna göre ya da ihtiyaca göre belirleyebilirsiniz ya da hiç süre vermeyebilirsiniz bu seçenek tamamen size bağlı.

Bu işlemi yaptıktan sonra Start Analysis butonu ile işlemi başlatabilirsiniz. İşlem başladıktan sonra aşağıdaki gibi bir görüntü sizleri karşılayacaktır.

İşleminiz bittikten sonra ise analiz aracının önerileri var ise onlar çıkacaktır.

Analiz aracımı yapılmasını uygun gördüğü 4 adet öneri ile karşımıza çıktı. Şimdi ise ben bunlardan bir tanesine bakarak bana ne öneri verdiğini incelemek istiyorum.

Karşıma çıkan bir NONCLUSTERED index oluşturma sorgusudur. Analiz aracımız bu sorguyu çalıştırıp bu index tanımını yaptıktan sonra performans alabileceğimi söylüyor.

Aracın işlevinden anlayacağınız üzere bizlere performans önerisi veren bir araçtır. Bu araç aslında yıllar önce nerede ne olduğunu bilmediğimiz fakat acil olarak çözmemiz gereken bir sorunda sürekli deadlock olan ve bir türlü tablosunu bulamadığımız projelerden birinde çok işime yaramıştı. Performans sorunu tabiki de bu aşamaya gelmeden bulup çözmek gerekir. İşin bu aşamamaya gelmemesi için datalarınızın analizini yapıp ilgili tablolarınız için önlemler almalısınız.

Ne kadar öneri verirse versin kalıp haline getirilmiş öneriler sisteminize uymayabilir.

Bir sonraki yazıda görüşmek üzere :)

Murat Dinç
Profesyonel olarak 8 yıldır Yazılım sektöründeyim. Microsoft ürünleri üzerinde çalışmaktayım ve ilgili sertifikasyonlara sahibim. Tekzen, Doğan TV Holding gibi ülkenin büyük şirketlerinde farklı zamanlarda Yazılım Uzmanı olarak görev aldım. Son olarak aktif olarak özel bir yazılım şirketinde Yazılım Geliştirme Takım Lideri olarak görev almaktayım.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git