dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Script #60
sqlserver
Performanceread-onlyMin Version: 2016

SQL Server Query Store ile Parametre Koklama (Parameter Sniffing) Adayları

Aynı sorgu için birden fazla plan ve büyük süre farkı olan sorguları bulur. Plan regresyonu ve parameter sniffing sorunlarını teşhis eder.

#parameter-sniffing#query-store#plan-regression
sqlserver · sql
SELECT TOP 20 q.query_id,
       COUNT(DISTINCT p.plan_id) AS plan_count,
       MIN(rs.avg_duration) / 1000 AS min_avg_ms,
       MAX(rs.avg_duration) / 1000 AS max_avg_ms,
       MAX(rs.avg_duration) / NULLIF(MIN(rs.avg_duration), 0) AS ratio,
       LEFT(qt.query_sql_text, 150) AS query_text
FROM sys.query_store_query q
JOIN sys.query_store_query_text qt ON qt.query_text_id = q.query_text_id
JOIN sys.query_store_plan p ON p.query_id = q.query_id
JOIN sys.query_store_runtime_stats rs ON rs.plan_id = p.plan_id
GROUP BY q.query_id, qt.query_sql_text
HAVING COUNT(DISTINCT p.plan_id) > 1
ORDER BY ratio DESC;
Operasyonel Notlar & İyileştirme Aksiyonu

Query Store ilgili veritabanında açık olmalıdır (`ALTER DATABASE ... SET QUERY_STORE = ON`).

Üretim Güvenliği & Çalıştırma Standartları
  • Bu script salt okunur (read-only) teşhis için tasarlanmıştır; doğrudan veri veya şema değişikliği yapmaz.
  • Ağır yük altındaki üretim sunucularında çalıştırmadan önce hedef veritabanı sürümünü (Min. Sürüm: 2016) doğrulayın.
  • İlişkili oturumu sonlandırma veya indeks silme gibi yazma etkili aksiyonlar için notlar bölümündeki komutları temkinli uygulayın.