Akıllı sorgu işlemeyi açıklama
SQL Server 2017 ve 2019'da ve Azure SQL ile Microsoft, uyumluluk düzeyleri 140 ve 150'ye birçok yeni özellik getirmiştir. Bu özelliklerin çoğu, kullanıcı tanımlı skaler değer işlevlerini kullanma ve tablo değişkenlerini kullanma gibi eski anti-desenleri düzeltmektedir.
Bu özellikler birkaç özellik ailesine ayrılır:
Akıllı sorgu işleme, en az uygulama çabasıyla mevcut iş yükü performansını geliştiren özellikler içerir.
İş yüklerinin akıllı sorgu işleme için otomatik olarak uygun olmasını sağlamak için geçerli veritabanı uyumluluk düzeyini 150 olarak değiştirin. Örneğin:
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;
Uyarlamalı sorgu işleme
Uyarlamalı sorgu işleme, sorgunun yürütme bağlamını temel alarak sorgu işlemeyi daha dinamik hale getiren birçok seçenek içerir. Bu seçenekler sorguların işlenmesini geliştiren çeşitli özellikler içerir.
Uyarlamalı Birleştirmeler – veritabanı altyapısı, satır sayısına göre karma ve iç içe döngüler arasında birleştirme seçimini erteler. Uyarlamalı birleşimler şu anda yalnızca toplu yürütme modunda çalışır.
Araya Eklenen Yürütme – Şu anda bu özellik çok deyimli tablo değerli işlevleri (MSTVF) destekler. SQL Server 2017'den önce, MSTVF'ler SQL Server sürümüne bağlı olarak bir veya 100 satırlık sabit bir satır tahmini kullanıyordu. İşlev çok daha fazla satır döndürdüyse bu tahmin, yetersiz sorgu planlarına yol açabilir. Planın geri kalanı birbirine geçmiş yürütmeyle derlenmeden önce MSTVF'den gerçek satır sayısı oluşturulur.
Bellek Verme Geri Bildirimi – SQL Server, istatistiklerden gelen satır sayısı tahminlerini temel alarak sorgunun ilk planında bir bellek izni oluşturur. Ciddi veri dengesizliği satır sayısının fazla veya az tahminine yol açabilir ve bu da eşzamanlılığı azaltan fazla bellek atamalarına veya yetersiz izinlere neden olabilir ve bu da sorgunun tempdb'ye veri taşmasına neden olabilir. Bellek Verme Geri Bildirimi ile SQL Server bu koşulları algılar ve taşma veya fazla yüklemeden kaçınmak için sorguya verilen bellek miktarını azaltır veya artırır.
Bu özelliklerin tümü uyumluluk modu 150'de otomatik olarak etkinleştirilir ve etkinleştirilmesi için başka bir değişiklik gerekmez.
Tablo değişkeni ertelenen derleme
MSTVF'ler gibi, SQL Server yürütme planlarındaki tablo değişkenleri de bir satır için sabit satır sayısı tahmini taşır. MSTVF'lere çok benzer şekilde bu sabit tahmin, değişkenin beklenenden daha büyük bir satır sayısına sahip olduğu durumlarda düşük performansa yol açmıştı. SQL Server 2019 ile tablo değişkenleri artık analiz edilir ve gerçek bir satır sayısına sahiptir. Ertelemeli derleme, MSTVF'ler için sıralı yürütmeyle benzerdir, ancak bu, yürütme planı içinde dinamik olarak değil, sorgunun ilk derlemesinde gerçekleştirilir.
Satır deposunda toplu işlem modu
Toplu yürütme modu, verilerin satır satır değil toplu olarak işlenmesini sağlar. Hesaplamalar ve toplamalar için önemli CPU maliyetlerine neden olan sorgular, bu işleme modelinin en büyük avantajını görür. Toplu işlem ve columnstore dizinlerini ayırarak, toplu iş modu işlemeden daha fazla iş yükü yararlanabilir.
Skaler kullanıcı tanımlı fonksiyon satır içi
SQL Server'ın eski sürümlerinde skaler işlevler çeşitli nedenlerle kötü performans gösterir. Skaler işlevler yinelemeli olarak yürütüldü ve her seferinde bir satır etkili bir şekilde işlendi. Yürütme planında uygun maliyet tahminleri yoktu ve sorgu planında paralelliğe izin vermediler. Kullanıcı tanımlı işlev inlining ile bu işlevler, yürütme planında kullanıcı tanımlı işlev işleci yerine skaler alt sorgulara dönüştürülür. Bu dönüşüm, skaler işlev çağrıları içeren sorgular için performansta önemli kazanımlara yol açabilir.
Yaklaşık sayı ayrı
Yaygın bir veri ambarı sorgu deseni, farklı sayıda sipariş veya kullanıcı yürütmektir. Bu sorgu düzeni büyük bir tabloda pahalı olabilir. Yaklaşık sayı ayrı, satırları gruplandırarak ayrı bir sayıyı toplamaya daha hızlı bir yaklaşım sağlar. Bu işlev %97 güvenilirlik aralığıyla %2 hata oranını garanti eder.