SQL 2019 ve SQL 2022’de Performans Açısından GO/Tiger Ürün Grubunda Dikkat Edilmesi Gerekenler
SQL Server 2019 ve 2022 sürümlerinde, Microsoft’un sorgu hesaplama motorunda yaptığı Cardinality Estimation (CE) geliştirmeleri her zaman beklendiği gibi çalışmayabilir. Özellikle karmaşık ERP uyarlamaları veya yoğun Scalar UDF kullanımı olan veritabanlarında bu makaledeki optimizasyon adımları hayat kurtarıcı olabilir.
Neden Optimizasyon Gereklidir?
Modern SQL motoru (CE 120 ve üzeri), verilerin dağılımını daha “akıllı” tahmin etmeye çalışsa da, yıllardır stabil çalışan eski sorgu yapılarında “Query Plan Regression” (Sorgu Planı Gerilemesi) yaşatarak işlemciyi (CPU) %100’e vurabilir.
1. Legacy Cardinality Estimation (Eski Tip Tahminleyici) Geçişi
Bazı karmaşık entegrasyonlarda ve özel yazılım modüllerinde, SQL motorunun yeni nesil hesaplama mantığı yanlış plan üretebilir. Aşağıdaki komut ile veritabanının daha stabil olan eski (Legacy) hesaplama mantığını kullanmasını sağlayabiliriz:
-- Veritabanı bazlı eski tip sorgu tahminleyiciyi aktif et
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;2. T-SQL Scalar UDF Inlining Devre Dışı Bırakma
SQL 2019 ile gelen bu özellik, scalar fonksiyonları otomatik olarak optimize etmeye çalışır. Ancak, fonksiyonların içine gömülen karmaşık SELECT sorguları, SQL motorunun execution plan oluştururken kafasını karıştırıp performansı ciddi şekilde düşürebilir.
-- Mevcut ayarın durumunu kontrol edin
SELECT * FROM sys.database_scoped_configurations WHERE name = 'TSQL_SCALAR_UDF_INLINING';
-- Performans kaybı gözlemleniyorsa özelliği kapatın
ALTER DATABASE SCOPED CONFIGURATION SET TSQL_SCALAR_UDF_INLINING = OFF;
Kritik Mühendislik Uyarısı
Bu işlemler veritabanı motorunun çalışma çekirdeğine müdahale eder. Ürünün standart kullanımı dışındaki entegrasyon ve uyarlama durumlarında, işlem öncesi mutlaka Full Backup (Tam Yedek) alınmalı ve değişiklikler önce test ortamında simüle edilmelidir.