Query Store

Query Store Nedir?

SQL Server içerisinde yer alan Query Store özelliği, sorgulara ait Execution planları ve çalışma esnasında gerçekleşen istatistiklerini otomatik olarak yakalar ve Execution planlarda gerçekleşen yavaşlamaları tespit etmenizi sağlar. Eksik kalan noktalar ve ne kadar tutarlı çalıştığını görebilir, sorgulamalarda değişen durumları daha detaylı analizler gerçekleştirebilir, özel durumlar için belirlediğiniz Execution planları zorla kullanmasını sağlayabilirsiniz. Bu sayede sorgu sonuçlarınızda daha etkili performans elde edebilirsiniz.

Resim 1

 

Yavaş sorgu nedir?

Sql Server’a gönderilen sorgular her zaman bir “iş yükü” olarak karşımıza çıkar. Atılan her sorgu disk üzerinde yer alan veri tabanından veri okur & yazar. Ram ve CPU kaynaklarını en küçük işlemlerde dahi her zaman tüketir. Sistem kaynaklarının maksimum seviyelerde zorlayarak kullanması (bazı özel durumlarda bu cümle geçerliliğini yitirebilir) ve sorgu sonuçlarının gecikmeli olarak dönmesi yavaş sorgu olarak tanımlanabilir. Donanımdan kaynaklı yavaş sorgular da oluşabilmesi mümkündür ama bu yazının konusu değil. Yavaş sorgular performans sorunun olarak “Execution Plan” değişiklikleri ile ilgilidir. Zaman içerisinde iyi performans alarak çalışılan sorgunun aniden yavaşlamasının birçok sebebi olabilir. Execution Planların değişmesine bu sayede yavaş sorguların oluşmasına sebep olabilir.

Plan değişikliklerine sebep olabilecek durumlar,

  • Plan değişikliklerinde etkili olan başka bir sorun Microsoft tarafından yayınlanan Cumulative Updates’lerdir. Toplu güncelleştirmelerde SQL Server bünyesinde bulunan hizmet paketlerinde değişiklik gerçekleştireceğinden dolayı yavaşlıklara sebebiyet verebilir.
  • Tablo yapısına yeni bir Column eklenmesi.
  • Tablo Columnların veri tipinin değiştirilmesi.
  • Sorgularda yeni parametrelerin eklenip çıkarılması olabilir.
  • Verilerde, Schemalarda veya sorgu parametrelerindeki bir değişiklik olabilir.
Resim 2

 

Query Store bize nasıl yardımcı olabilir?

Query Store özelliğini açtığınızda biraz zaman geçmesini bekleyerek veri tabanına gelen sorgular analizlerin gerçekleştirilmesini bekleyin. Bu sayede geçmişe yönelik hem sorgu istatistiklerini toplayabilir hem de “Force Plan” gerçekleştireceğiniz işlemleriniz için havuz oluşturabilirsiniz.

Plan Regression’lar

Sql Server 2016’dan önceki sürümlerde belirli bir Execution Plan’ların ne kadar sağlıklı çalışıp çalışmadığını görebileceğiniz bir yapı yoktu. 2016 ve sonrası sürümler için planların geçmişini sistemde depolayarak ve her birinin zaman içerisindeki performansını görmemize imkân tanır. Gerileyen Sorgular (Regressed Queries) raporu ile performansta sıkıntı oluşturan sorguları tespit etmenizde yararlıdır.

Sql Server Ugrade İşlemleri

Sql Server sürüm yükseltme işlemlerinde Query Store çalışmalarındaki riski azaltmak içerisinden veri tabanı ayarlarından uyumluluk düzeyini (COMPATIBILITY_LEVEL) ayarlayabilirsiniz.  Gerekli ayardan sonra gerçekleştirdiğiniz analizler sonrası performans iyileştirmelerinde yeni planlar tanımlayabilirsiniz, planı zorlayabilir ya da daha önceki uyumluluk düzeyine geri dönmek gerekiyorsa dönebilirsiniz. Bu senaryo Cumulative Update durumları içinde geçerlidir. Ama Cumulative Update yükleme-geri alma çalışmalarında veri tabanı uyumluluk seviyesi aynı kalacağını unutmamanız gerekir.

Uygulama / Donanım Değişiklikleri

SQL Server yükseltmelerine benzer şekilde, veri tabanı, uygulama veya donanım değişiklikleri dahil sisteminizdeki önemli değişiklikleri test etmek için Query Store’u kullanabilirsiniz. Temel istatistikleri oluşturmak için sorgu ve plan verilerini toplayabilir, gerekli değişiklikleri uygulayabilir ve iş yükünü analiz etmek ya da performans gerilemesini belirlemek için Query Store kullanabilirsiniz.

Maliyetli Sorguları Belirlebilirsiniz

Sql Server 2016 ve öncesinde performans verileri için DMV’ler kullanılıyordu. Bu yöntemde sınırlamalar olmakla birlikte karmaşık bir analiz yapmak gerekiyordu. Query Store ile belirli bir yürütme ölçüsüne göre düzeltir ve belirli bir yürütme ölçüsüne göre veri tabanınızdaki en pahalı sorguları hızlı bir şekilde belirlemenize olanak tanır. Sql Server Managament Studio içerisinden “Top Resource Consuming Queries” raporu ile bu bilgilere ayrıntılı olarak erişebilirsiniz.

Tek Seferlik Plan Oluşturabilirsiniz

Query Store ile nadiren ya da sadece bir kez yürütülecek bir sorgu için edilen geçici planlar tanımlamak için kullanabilirsiniz. Tek seferlik çalıştırılan ve büyük veri kümesi elde etmeye çalışan sorgular sistem kaynaklarının önemli bir bölümünü sorgu optimizasyonuna harcar ve Execution Plan’da büyük maliyetler çıkarabilir.

Resim 3

Farklı açıklardan yazılımış Kaynaklar:

SQL Server 2016 (CTP2) Query Store – Bölüm 1

http://ekremonsoy.blogspot.com/2019/04/query-store-tecrube.html

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir