Sorgu Ayarlama Yardımcısı'nın (QTA) sizin için uygun olup olmadığını belirleme
Veritabanı sürümü yükseltmelerinden sonra olası sorgu planı regresyonunun ve performans kaybının farkındasınız. Veritabanı yükseltmelerinden sonra performansı korumaya yardımcı olmak için, gerileyen sorguları tanımlamak ve azaltmak için en iyi yöntemi bulmanız gerekir. Bu ünitede, yükseltmelerden sonra düşük performansın sorun olmadığından emin olmak için Sorgu Deposu ve Sorgu Ayarlama Yardımcısı'nı (QTA) nasıl kullanabileceğiniz açıklanır.
Sorgu Deposu ve Sorgu Ayarlama Yardımcısı'nı kullanmaya başlama
QTA, yükseltmeden sonra gerileyen sorguları bulmak için Sorgu Deposu verilerine bağlıdır. Sorgu Deposu, yükseltmeden önce eski veritabanı sürümüne ilişkin ölçümleri toplamanıza olanak tanır.
Sorgu Deposu SQL Server 2016'da, QTA ise SQL Server 2017'de kullanıma sunulmuştur. SQL Server 2022 örneğinde çalışan tüm veritabanı sürümleri bu özelliklerin ikisini de kullanabilir. Bu araçlar SQL Server Management Studio (SSMS) ile tümleşiktir ve veritabanı düzeyinde çalışır.
Veritabanının uyumluluk düzeyi, sürümünü belirler ve bu da kullandığı kardinalite tahmin aracı sürümünü belirler. Kardinalite tahmin aracı, bir sorgunun kaç satır döndürme olasılığını tahmin eder, böylece sorgu iyileştiricisi en düşük maliyetli planı seçebilir. SQL Server 2014, çoğu sorgudan yararlanan ancak nadiren olumsuz performans etkisi oluşturabilen yükseltilmiş bir kardinalite tahmin aracı algoritması kullanıma sunulmuştur.
Performans etkisini ölçmek için Sorgu Deposu, gerileyen sorguları ve en fazla sistem kaynağını tüketen sorguları raporlar. QTA, sorgu deposu sorgu performansı verilerini veritabanı yükseltmesi öncesi ve sonrasında karşılaştırır ve performansı geliştirmek için sorgular üzerinde denemeler gerçekleştirir.
Not
QTA, Azure SQL Veritabanı veya SQL Yönetilen Örneği veritabanları için kullanılamaz. Bu veritabanları için Azure Data Studio içinAzure SQL geçiş uzantısını kullanmayı göz önünde bulundurun.
QTA ve otomatik plan düzeltmesi
SQL Server bir Transact-SQL (T-SQL) sorgusu çalıştırdığında, sorguyu yürütebilecek olası planları analiz eder. SQL Server, başarıyla yürütülen sorgular için planları önbelleğe alır ve sorgular yeniden yürütülürken bunları yeniden kullanır.
SQL Server, sorgu için en uygun planı seçer ve bir durum onu yeni bir sorgu seçmeye zorlayana kadar kullanır. Bu koşullar, planı yeniden derleyen veritabanı altyapısını, eklenen veya kaldırılan bir dizini veya değiştirilen istatistikleri içerebilir.
Yeni planın eski planla ilgili bir gelişme olması her zaman söz konusu değildir. Gerileyen planı olan sorguları aramak için aşağıdaki komutu çalıştırabilirsiniz.
SELECT * FROM sys.dm_db_tuning_recommendations
Daha sonra SQL Server'ı önerilen belirli bir planı kullanmaya zorlamak için sp_force_plan
saklı yordamını kullanabilirsiniz.
EXEC sp_force_plan @query_id = 1187, @plan_id = 1975
sp_force_plan
yordamı, yükseltilen bir veritabanında birçok sorgunun gerilemesi durumunda zahmetli olabilecek el ile gerçekleştirilen bir işlemdir. SQL Server 2017, sorguları otomatik olarak ayarlamak ve el ile müdahale gereksinimini ortadan kaldırmak için otomatik plan düzeltme adlı yeni bir özellik kullanıma sunulmuştur. Aşağıdaki deyimi çalıştırarak veritabanında otomatik plan düzeltmesini etkinleştirebilirsiniz:
ALTER DATABASE <database-name> SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON)
Veritabanı düzeyinde ayarlandığında, otomatik plan düzeltmesi SQL Server'a son iyi sorgu planını kullanmasını emreder. SQL Server, plan yürütülürken regresyonları bulmak ve en iyi performansı sağladığından emin olmak için planı izlemeye devam eder.
Otomatik plan düzeltmesi QTA'dan farklı çalışır. Son iyi planı kullanmak, önceki bir kardinalite tahmin aracına geri dönme anlamına gelebilir. Buna karşılık, QTA denemelerini hedef veritabanı uyumluluk düzeyine eşlenen kardinalite tahmin aracının sürümünü kullanarak yapar.
Özet
QTA, SQL Server 2022'de kullanılabilir ve çalıştıracak Sorgu Deposu'na bağlıdır. QTA'nın, yükseltmeden sonra sorguları gözlemleyip karşılaştırmalar yapabilmesi için bir veritabanı için önceki uyumluluk düzeyinde Sorgu Deposu temel verilerine sahip olması gerekir.
SQL Server 2017'de kullanıma sunulan otomatik plan düzeltmesi, sorgu planını el ile tanımlama ve zorlama gereksinimini ortadan kaldırır. Otomatik plan düzeltmesi veritabanı düzeyinde etkinleştirilebilir, ancak kardinalite tahmin aracının sürümünü geri alabilir. QTA, kardinalite tahmin aracının hedef uyumluluk düzeyine eşlenen sürümünü kullanır.