SQL Server içerisinde bulunan Query Store özelliği, çalıştırılan sorguların execution planını ve bu sırada oluşan istatistiklerini otomatik olarak yakalar. Böylece query plan değişikliği ile oluşan problemleri de hızlı ve kolay şekilde fark edebiliriz.

Elinizde bulunan bir sorguya ait query plan zamanla değişebilir. Bunun birçok sebebi vardır.
- Tablo yapısına yeni bir column eklenmesi
- Veri tipinin değiştirilmesi
- Sorgularda yeni parametrelerin eklenip çıkarılması
- Verilerde, schemalarda veya sorgu parametrelerindeki değişiklik
Burada önemli olan ise bazen bu değişimler sorgunun yavaş çalışmasına neden olur. Query Store ile beraber bu yavaşlığın kök nedenine inmek daha kolay oldu. Ayrıca query store sayesinde ilgili sorguya ait read-write bilgileri ve cpu tüketimi bilgilerine de erişebilirsiniz.
Query Store'u veritabanı seviyesinde aktif edebiliyoruz. Veritabanı üzerine sağ tıklayarak properties diyoruz ve Query Store sekmesine geliyoruz.
Operation Mode alanından Read Write'ı seçiyoruz. Böylelikle Query Store gerekli bilgiyi toplayabilir ve size ilgili sonuçları verebilir.
Data Flush kısmında'ki değer ise toplanan verinin hangi aralıklar ile diske yazıldığını belirtir. Diske yazılma işlemi asenkron olduğu için ciddi bir performans sıkıntısına sebep olmaz.
Statistics Collection Interval default olarak 1 Hour olarak geliyor. Query Store, zamanı Statistics Collection Interval'de belirttiğimiz ayara göre bölüyor ve her execution plan için bu aralıktaki istatistikleri query store'da saklıyor. Buradaki zaman dilimini daha düşük bir değere göre ayarlamak sorunu çözmeni kolaylaştıracaktır. Ancak Query Store'un boyutunuda büyütecektir. Başlangıç olarak default ayarlarıyla bırakıp daha sonra ihtiyaca göre değişiklik yapabilirsiniz.
Max Size (MB) kısmından Query Store'un ulaşabileceği maksimum boyutu MB cinsinden tanımlıyoruz. Bu değer aşıldığında Operation Mode otomatik olarak Read Only'e dönüşecektir.
Query Store Capture Mode kısmı, query store'un hangi sorguları yakalayacağını belirler. Default olarak All gelir. Yani bütün sorgular için aktiftir. Auto'yu seçerseniz sık gelmeyen sorguları yakalamaz. None'ı seçerseniz hiçbir sorguyu yakalamaz.
Size Based Cleanup Mode kısmında, max size limitine yaklaşıldığında otomatik veri temizlemenin otomatik olarak çalışıp çalışmayacağını belirleriz. Default olarak Auto geliyor. Bu şekilde kullanılması tavsiye ediliyor.
Stale Query Threshold kısmında query store'da saklanan bilgilerin ne kadar süre sonra artık saklanmaması gerektiğini belirtiriz. Default olarak 30 gün geliyor ancak bu süreyi ihtiyacınıza göre değiştirebilirsiniz. Bence bir hafta bu ayar için yeterli hatta fazla olacaktır.
Query store oluştuktan sonra aşağıdaki gibi query store'a sağ tıklayarak araştırmak istediğiniz şeyi seçebilirsiniz.

