İzleme · Performans · SQL Server

Performans Sorunlarında Pratik Query Store Kullanımı

Query Store sorgu metinlerini, execution planlarını ve runtime geçmişini veritabanında saklar. Asıl değeri yalnızca “en maliyetli sorgular” ekranı değil, bilinen bir zaman noktasından önceki ve sonraki davranışı karşılaştırabilmesidir.

[company_article_image src=”articles/query-store-workflow.svg” alt=”Query Store capture compare ve karar iş akışı” caption=”Query Store runtime aralıklarını sorgu metni ve plan geçmişiyle ilişkilendirir.”]

Operasyonel bir bileşen gibi yapılandırın

Maximum size, retention ve capture mode değerlerini iş yüküne göre belirleyin. Query Store’un sessizce read-only duruma geçmemesi için gerçek durumunu ve alan kullanımını izleyin.

SELECT actual_state_desc, desired_state_desc,
       current_storage_size_mb, max_storage_size_mb,
       readonly_reason
FROM sys.database_query_store_options;

Regresyonu sistematik inceleyin

  1. Yavaşlama zamanını ve ilgili uygulama aksiyonunu tanımlayın.
  2. Duration, CPU veya logical read değerleri anlamlı biçimde değişen sorguları bulun.
  3. Plan ID ve runtime interval değerlerini karşılaştırın.
  4. Statistics, cardinality estimate, parameter sensitivity, spill ve index değişikliklerini inceleyin.
  5. Düzeltmeyi temsilî parametre ve eşzamanlılıkla doğrulayın.
SELECT TOP (20) q.query_id, p.plan_id,
       SUM(rs.count_executions) AS executions,
       AVG(rs.avg_duration) AS avg_duration_microseconds,
       MAX(rs.max_duration) AS max_duration_microseconds
FROM sys.query_store_query AS q
JOIN sys.query_store_plan AS p ON p.query_id = q.query_id
JOIN sys.query_store_runtime_stats AS rs ON rs.plan_id = p.plan_id
GROUP BY q.query_id, p.plan_id
ORDER BY MAX(rs.max_duration) DESC;

Üretimde sys.query_store_runtime_stats_interval üzerinden açık bir zaman filtresi uygulayın. Aksi halde eski peak değerler güncel olayı gizleyebilir.

Plan forcing’i kontrollü geçici çözüm olarak kullanın

Bilinen iyi planı force etmek kök neden incelenirken servisi stabilize edebilir; ancak bakım gerektirmeyen kalıcı çözüm değildir. Neden uygulandığı, rollback adımı, izleme ölçütü ve gözden geçirme tarihi kaydedilmelidir.

Sonuçta yalnızca elapsed time değil CPU, logical read, execution count, varyans ve wait profili de eşdeğer zaman aralıklarında karşılaştırılmalıdır.