Yazılım Mimarileri ve Tasarım Desenleri Üzerine

SQL Server 2016 – Live Query Statistics(Canlı Sorgu İstatistiği)

Merhaba,

Kâh yazılımımızda oluşturmuş olduğumuz algoritmada, kâh veritabanımızda yazmış olduğumuz herhangi bir sorguda artık temel olarak dikkate alınan, mevcut yapının performans ve hız verimliliğidir. Haliyle ilgili içeriğimiz veritabanıyla kapsamında olduğundan dolayı oluşturduğumuz mevcut sorguların performansları bizim için oldukça önemlidir. İşte bu önem arz eden yapıya özel SQL Server 2016’da Canlı Sorgu İstatistiği olarak nitelendirdiğimiz Live Query Statistics özelliği gelmiştir.

Live Query Statistics özelliği ile sorgularımızın yaşam döngüsünü takip ederek; performans, hız, tamamlanma yüzdeliği vs. gibi değişkenleri detaylı bir şekilde elde edebilmekteyiz.

SQL Server, üzerinde çalıştırılacak bir sorguyu çalıştırabilmek için o sorguya özel Execution Plan dediğimiz bir çalışma yolu oluşturmaktadır. Sorgunun çalışma anında Execution Plan üzerinde hangi tablo ve indeksten hangi veri okunuyor gibisinden canlı olarak bu verileri görebiliyor, maliyeti hesaplayabiliyoruz.

Live Query Statistics özelliği ile çalışan sorguların anlık olarak hangi veriyi okuduğunu, yüzdelik olarak işlemin ne kadarının tamamlandığını, zamanını, maliyetini vs. gibi değişken yahut faktörleri net bir şekilde takip edebiliyoruz. Haliyle biz bu özellik sayesinde sorgumuzda hangi operatörlerin çalıştığını ve sorgunun ne zaman biteceğini takip edebiliyoruz.

Live Query Statistics özelliği her ne kadar SQL Server 2016 ile gelmiş olsada aslında SQL Server 2014 ile beraber gelen sys.dm_exec_query_profiles adında bir DMV(Dynamic Management View)’e dayanmaktaymış. Bu DMV ile sorgunun çalışma zamanında belli başlı bilgiler edinilebiliyor, tamamlanmasına ne kadar zaman kaldığı hesaplanabiliyormuş. Lakin Live Query Statistics özelliği ile bu işlem artık daha basit hale gelmiş. (Anlayacağınız gibi bende sys.dm_exec_query_profiles isimli DMV yapısını şu ana kadar hiç duymamış bulunmaktayım.)

Tabi Live Query Statistics özelliğinin sorgu ile ilgili verisel bilgileri elde edebilmemiz için getirdiği en büyük kolaylık sürece görsel bir arayüz kazandırmasıdır.

Şimdi Live Query Statistics özelliğini örneklendirebilmek için Northwind veritabanında pratik uygulama üzerinden gideceğiz.

Aşağıdaki ekranda gördüğünüz gibi ilgili sorguyu Live Query Statistics özelliği ile analiz etmek istiyorsak eğer “Include Live Query Statistcs” butonunu aktifleştiriyoruz.

Bu adımdan sonra ilgili sorguyu çalıştırdığımızda aşağıdaki görüntüde olduğu gibi Execution Planımızı net bir şekilde inceleyelim.

İstatistik sürecinden herhangi bir T zamanındaki ekran görüntüsünü aşağıya alalım.

Evet, görüldüğü üzere sol alt köşede sorgunun 13%’ünün çalıştırıldığını, “Satislar” tablosunun 2.692 saniye içerisinde 10%’unun tamamlandığını, “[Satis Detaylari]” tablosunun 2.692 saniyede 100%’ünün tamamlandığını görebiliyoruz.

Burada dikkat etmemiz gereken nokta kesikli çizgilerde işlem devam ediyor anlamına gelirken, işlemi biten göstergede sürekli çizgiler gözükmektedir.

Ayrıca istatistik nesnesinin üzerine geldiğimiz vakit kaç kayıtın kaç saniyede işlendiğini aşağıdaki gibi görebilmekteyiz.

Görüldüğü üzere Actual Number of Rows bölümünde gözüken 1269932 verinin, ElapsedTime bölümünde gözüken 17001 zamanda işlendiğini göstermektedir.

Live Query Statistics özelliği her ne kadar sorgumuzla alakalı bize tüm gerekli bilgileri detaylıca versede haliyle bu hizmetin bedelini performans ve maliyetten bizlere ödetecektir. Bu yüzden bu özelliği kullanırken dikkatli olmalı, her sorguya özel değil, gerçekten ağır ve kompleks sorguları dahada iyileştirmek amaçlı bu özelliği kullanmanızı tavsiye ediyorum.

Son olarak bu yapının Column Store Index, Memory Optimized Table ve Natively Compiled Stored Procedure yapılarında kullanamayacağımızı, sonraki güncellemelerde kullanmayı temenni ettiğimizi bildiririm.

Sonraki yazılarımda görüşmek üzere…

İyi çalışmalar dilerim…

 

Mobil sürümden çık