Sorgu Deposu'nı keşfedin

Tamamlandı

SQL Server Sorgu Deposu, sorguların, planların ve çalışma zamanı istatistiklerinin geçmişini otomatik olarak yakalayan ve performans sorunlarını gidermeyi ve sorgu ayarlamayı basitleştiren veritabanı başına bir özelliktir. Ayrıca veritabanı kullanım desenleri ve kaynak tüketimi hakkında içgörüler sağlar.

Sorgu Deposu üç mağazadan oluşur:

  • Plan deposu: Tahmini yürütme planı bilgilerini depolar.
  • Çalışma zamanı istatistikleri deposu: Yürütme istatistikleri bilgilerini depolar.
  • Bekleme istatistikleri deposu: Bekleme istatistikleri bilgilerini kalıcı hale getirmektedir.

Sorgu Deposu bileşenlerinin ekran görüntüsü.

Sorgu Deposunu Etkinleştirme

Sorgu Deposu, Azure SQL veritabanlarında varsayılan olarak etkindir. Bunu SQL Server ve Azure Synapse Analytics ile kullanmak istiyorsanız, önce etkinleştirmeniz gerekir. Sorgu Deposu özelliğini etkinleştirmek için ortamınız için geçerli olan aşağıdaki sorguyu kullanın:

-- SQL Server
ALTER DATABASE <database_name> SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);

-- Azure Synapse Analytics
ALTER DATABASE <database_name> SET QUERY_STORE = ON;

Sorgu Deposu verileri nasıl toplar?

Sorgu Deposu, sorgu işleme işlem hattıyla birden çok aşamada tümleşir. Her tümleştirme noktasında veriler bellekte toplanır ve G/Ç ek yükünü en aza indirmek için zaman uyumsuz olarak diske yazılır. Tümleştirme noktaları aşağıdaki gibidir:

  1. Bir sorgu ilk kez yürütürken, sorgu metni ve ilk tahmini yürütme planı Sorgu Deposu'na gönderilir ve kalıcı hale gönderilir.

  2. Bir sorgu yeniden derlendiğinde plan Sorgu Deposu'nda güncelleştirilir. Yeniden derleme yeni oluşturulan bir yürütme planıyla sonuçlanırsa, önceki planları artırmak için Sorgu Deposu'nda da kalır. Ayrıca Sorgu Deposu, karşılaştırma amacıyla her sorgu planı için yürütme istatistiklerini izler.

  3. Derleme ve yeniden derleme aşamalarını denetleme sırasında Sorgu Deposu, sorgunun yürütülmesi için zorunlu bir plan olup olmadığını tanımlar. Sorgu Deposu yordam önbelleğindeki plandan farklı bir zorlamalı plan sağlıyorsa sorgu yeniden derlenmiştir.

  4. Sorgu yürütürken çalışma zamanı istatistikleri Sorgu Deposu'nda kalır. Sorgu Deposu, her sorgu planının doğru bir gösterimini sağlamak için bu verileri toplar.

Akış grafiği olarak görüntülenen sorgu yürütme işlem hattındaki Sorgu Deposu tümleştirme noktalarının ekran görüntüsü.

Query Store'un verileri nasıl topladığı hakkında daha fazla bilgi edinmek için bkz. Sorgu Deposu verileri nasıl toplar?

Genel senaryolar

SQL Server Sorgu Deposu, veritabanı işlemlerinin performansı hakkında değerli içgörüler sağlar. Yaygın senaryolar şunlardır:

  • Düşük sorgu yürütme planı seçiminden kaynaklanan performans regresyonlarını belirleme ve düzeltme.
  • En yüksek kaynak tüketimi sorgularını belirleme ve ayarlama.
  • Veritabanı ve uygulama değişikliklerinin etkilerini değerlendirmek için A/B testi.
  • SQL Server yükseltmelerinden sonra performans kararlılığını sağlama.
  • En sık kullanılan sorguları belirleme.
  • Sorgu için sorgu planlarının geçmişini denetleme.
  • Planlanmamış iş yüklerini tanımlama ve geliştirme.
  • Veritabanının yaygın bekleme kategorilerini ve bekleme sürelerini etkileyen katkıda bulunan sorgu ve planları anlama.
  • Zaman içindeki veritabanı kullanım desenlerini kaynak tüketimi (CPU, G/Ç, Bellek) açısından analiz etme.

Sorgu Deposu görünümlerini bulma

Veritabanında Sorgu Deposu etkinleştirildikten sonra Sorgu Deposu klasörü Nesne Gezgini'daki veritabanı için görünür. Azure Synapse Analytics için Sorgu Deposu görünümleri Sistem Görünümleri altında görüntülenir. Sorgu Deposu görünümleri, SQL Server veritabanının performans yönleri hakkında toplu ve hızlı içgörüler sağlar.

Sorgu Deposu görünümlerinin vurgulandığı S S M S Nesne Gezgini'nin ekran görüntüsü.

Düşük Performanslı Sorgular

Gerileyen sorgu, yürütme planı değişiklikleri nedeniyle zaman içinde performans düşüşü yaşar. Şema değişiklikleri, istatistik değişiklikleri ve dizin değişiklikleri gibi çeşitli faktörler nedeniyle tahmini yürütme planları değişebilir. Yordam önbelleğini araştırmak ilk içgüdü olabilir, ancak sorgu için yalnızca en son yürütme planını depolar ve planlar sistemin bellek taleplerine göre çıkarılabilir. Ancak Sorgu Deposu, her sorgu için birden çok yürütme planını kalıcı hale getirir ve bu planlar arasından, plan değişikliklerinin neden olduğu sorgu performansı düşüşünü ele almak için plan zorlaması kullanarak belirli bir planı seçme esnekliği sağlar.

Regresyona Sahip Sorgular görünümü, belirli bir zaman çerçevesindeki yürütme planı değişiklikleri nedeniyle yürütme ölçümleri gerileyen sorguları sabitleyebilir. Bu görünüm, seçilen ölçüme (süre, CPU süresi, satır sayısı ve daha fazlası gibi) ve bir istatistike (toplam, ortalama, minimum, maksimum veya standart sapma) göre filtrelemeye olanak tanır. Ardından, sağlanan filtreye göre en çok gerileyen 25 sorgu listelenir. Varsayılan olarak, sorguların grafik çubuk grafik görünümü görüntülenir, ancak isteğe bağlı olarak sorguları kılavuz biçiminde görüntüleyebilirsiniz.

Sol üstteki sorgu bölmesinden bir sorgu seçtikten sonra, plan özeti bölmesi zaman içinde sorguyla ilişkili kalıcı sorgu planlarını görüntüler. Plan Özeti bölmesinde bir sorgu planı seçildiğinde alt bölmede bir grafik sorgu planı gösterilir. Hem plan özet bölmesindeki hem de grafik sorgu planı bölmesindeki araç çubuğu düğmeleri, seçili sorgu için seçili planı zorlamanıza olanak sağlar. Bu bölme yapısı ve davranışı tüm SQL Sorgu görünümlerini tutarlı bir şekilde kullanır.

Her bir farklı bölmeyi gösteren Sorgu Deposu Regresyona Uğrayan Sorgular görünümünün ekran görüntüsü.

Alternatif olarak, plan zorlamayı sp_query_store_force_plan kullanmak için saklı yordamı kullanabilirsiniz.

EXEC sp_query_store_force_plan @query_id=73, @plan_id=79

Genel Kaynak Tüketimi

Genel Kaynak Tüketimi görünümü, belirtilen bir zaman çerçevesi için birden çok yürütme ölçümü (yürütme sayısı, süre, bekleme süresi ve daha fazlası gibi) için toplam kaynak tüketimini analiz etmenizi sağlar. İşlenen grafikler etkileşimlidir; grafiklerden birinden ölçü seçerken, seçilen ölçüyle ilişkili sorguları gösteren detaylandırma görünümü yeni bir sekmede görüntülenir.

Sql Sorgu Deposu Genel kaynak tüketimi görünümünün ekran görüntüsü ve görüntüleme için kullanılabilecek farklı ölçümleri gösteren bir yapılandırma iletişim kutusu.

Ayrıntılar görünümü, seçilen ölçüme katkıda bulunan en iyi 25 kaynak tüketici sorgusu sağlar. Bu ayrıntılar görünümü, ilişkili sorguların ve ayrıntılarının incelenmesine, kaydedilen tahmini sorgu planlarını değerlendirmesine ve isteğe bağlı olarak performansı geliştirmek için plan zorlamasına olanak tanıyan tutarlı arabirimi kullanır. Bu görünüm, cpu kullanımının kapasiteye ulaşması gibi sistem kaynağı çekişmesi bir sorun haline geldiğinde değerlidir.

Veritabanı için en iyi 25 kaynak tüketiminin ekran görüntüsü.

En Çok Kaynak Kullanan Sorgular

En Çok Kaynak Tüketen Sorgular görünümü, Genel Kaynak Tüketimi görünümünün ayrıntılarına benzer. Ayrıca filtre olarak bir ölçüm ve istatistik seçmeye de olanak tanır. Ancak, görüntülediği sorgular seçilen filtreye ve zaman çerçevesine göre en etkili 25 sorgu olur.

Veritabanı için en çok kaynak tüketen sorgular görünümünün ekran görüntüsü.

En Çok Kaynak Tüketen Sorgular görünümü, planlanmamış iş yüklerini tanımlarken ve geliştirirken iş yükünün planlanmamış doğasının ilk göstergesini sağlar. Örneğin, aşağıdaki görüntüde, en çok kaynak tüketen sorguların yaklaşık 90% yalnızca bir kez yürütüldüğünü ortaya çıkarabilmek için Yürütme Sayısı ölçümü ve Toplam istatistiği seçilir.

Yürütme sayısına göre filtrelenen en çok kaynak tüketen sorguların ekran görüntüsü.

Zorlamalı Planlı Sorgular

Zorunlu Planlarla Sorgular görünümü, zorlamalı sorgu planlarına sahip sorgulara hızlı bir bakış sağlar. Zorlamalı bir plan artık beklendiği gibi çalışmıyorsa ve yeniden değerlendirilmesi gerekiyorsa bu görünüm ilgili hale gelir. Bu görünüm, seçili sorgu için tüm kalıcı tahmini yürütme planlarını kolayca gözden geçirerek başka bir planın performans için daha uygun olup olmadığını belirleme olanağı sağlar. Bu durumda, bir planı gerektiği gibi uygulamak için araç çubuğu düğmeleri kullanılabilir.

Zorunlu planlara sahip sorguların ekran görüntüsü.

Yüksek Çeşitlemeli Sorgular

Sorgu performansı yürütmeler arasında farklılık gösterebilir. Yüksek Varyasyonlu Sorgular görünümü, seçilen ölçüm için en yüksek varyasyona veya standart sapmaya sahip sorguların analizini içerir. Arabirim çoğu Sorgu Deposu görünümüyle tutarlıdır ve sorgu ayrıntısı incelemesine, yürütme planı değerlendirmesine ve isteğe bağlı olarak belirli bir planı zorlamaya olanak sağlar. Tahmin edilemeyen sorguları daha tutarlı bir performans düzenine ayarlamak için bu görünümü kullanın.

Yüksek varyasyona sahip sorguların ekran görüntüsü.

Sorgu Bekleme İstatistikleri

Sorgu Bekleme İstatistikleri görünümü, veritabanı için en etkin bekleme kategorilerini analiz eder ve bir grafik oluşturur. Bu grafik etkileşimlidir; Bekleme kategorisi seçildiğinde, bekleme süresi istatistiğine katkıda bulunan sorguların ayrıntılarına iner.

Yüksek varyasyon görünümüne sahip sorguların ekran görüntüsü görüntülenir.

Ayrıntılar görünümü arabirimi, sorgu ayrıntı denetimi, yürütme planı değerlendirmesi ve isteğe bağlı olarak belirli bir planı zorlamaya olanak sağlayan çoğu sorgu deposu görünümüyle de tutarlıdır. Bu görünüm, uygulamalar genelinde kullanıcı deneyimini etkileyen sorguların belirlenmesine yardımcı olur.

İzleme Sorgusu

Sorgu İzleme görünümü, girilen sorgu kimliği değerine göre belirli bir sorgunun analiz edilmesini sağlar. Çalıştırıldıktan sonra, görünüm sorgunun tam yürütme geçmişini sağlar. Yürütmedeki onay işareti, zorlamalı bir planın kullanıldığını gösterir. Bu görünüm, sorgu performansının kararlı kaldığını doğrulamak için zorunlu planlara sahip sorgular gibi sorgular hakkında içgörü sağlayabilir.

Belirli bir sorgu kimliğine göre İzleme Sorgusu görünümü filtrelemesinin ekran görüntüsü.

Sorgu beklemelerini bulmak için Sorgu Deposu'nı kullanma

Bir sistemin performansı azalmaya başladığında, olası bir nedeni belirlemek için sorgu bekleme istatistiklerine başvurmak mantıklıdır. Ayarlaması gereken sorguları tanımlamaya ek olarak, yararlı olabilecek olası altyapı yükseltmelerine de ışık yakabilir.

SQL Sorgu Deposu, veritabanının en iyi bekleme kategorileri hakkında içgörü sağlamak için Sorgu Bekleme İstatistikleri görünümünü sağlar. Şu anda 23 bekleme kategorisi vardır.

Sorgu Bekleme İstatistikleri görünümünü açtığınızda, çubuk grafik veritabanı için en etkili bekleme kategorilerini görüntüler. Ayrıca, bekleme kategorileri bölmesinin araç çubuğunda bulunan bir filtre, bekleme istatistiklerinin toplam bekleme süresine (varsayılan), ortalama bekleme süresine, minimum bekleme süresine, maksimum bekleme süresine veya standart sapma bekleme süresine göre hesaplanmasını sağlar.

Çubuk grafik olarak en etkili kategorileri görüntüleyen Sorgu Bekleme İstatistikleri görünümünün ekran görüntüsü.

Bekleme kategorisi seçildiğinde, bu bekleme kategorisine katkıda bulunan sorguların ayrıntılarına inilir. Bu görünümden, en etkili olan sorguları tek tek araştırabilirsiniz. Sorgu bölmesinde bir sorgu seçerek Plan özeti bölmesindeki kalıcı tahmini yürütme planlarına erişebilirsiniz. Plan özeti bölmesinden bir sorgu planı seçildiğinde, grafik sorgu planı alt bölmede görüntülenir. Bu görünümden, performansı artırmak için sorgu için sorgu planını zorlama veya zorlamayı kaldırma olanağına sahipsiniz.

Bekleme kategorisi için en etkili sorguları görüntüleyen Sorgu Bekleme İstatistikleri görünümünün ekran görüntüsü.

Otomatik plan düzeltmesi

SQL Server 2017 ve Azure SQL Veritabanı’nda, Sorgu Deposu’ndaki veriler analiz edilerek otomatik plan düzeltmesi kavramı ortaya konmuştur. SQL Server 2017 (veya üzeri) ve Azure SQL Veritabanı’nda bir veritabanıyla Sorgu Deposu etkinleştirildiğinde SQL Server altyapısı, sorgu planı regresyonlarını arar ve önerilerde bulunur. Bu önerileri sys.dm_db_tuning_recommendations dinamik yönetim görünümünde (DMV) görebilirsiniz. Bu öneriler, performans iyi durumda olduğunda bir sorgu planını el ile zorlamaya yönelik T-SQL deyimlerini içerir.

Bu önerilerde güvenilirlik elde ederseniz, SQL Server'da regresyonlarla karşılaşıldığında planların otomatik olarak zorlanmasını sağlayabilirsiniz. ve bağımsız değişkenini kullanarak ALTER DATABASE otomatik plan düzeltmesini AUTOMATIC_TUNING etkinleştirin.

Azure SQL Veritabanı için otomatik plan düzeltmesini Azure portalda veya REST API’lerde otomatik ayarlama seçenekleri aracılığıyla da etkinleştirebilirsiniz. Otomatik plan düzeltmesi önerileri, Sorgu Deposu’nun etkinleştirildiği her veritabanında etkindir (Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği için varsayılandır). Yeni veritabanları için otomatik plan düzeltmesi (FORCE_PLAN), Azure SQL Veritabanı için varsayılan olarak etkindir.