Herkese Merhaba Ben Kurtsz Bu Konuda Sizlere "MSSQL’de Query Store Kullanarak Yavaş Sorgu Analizi" anlatacağım. Her zaman ki gibi kısaca, sade ve anlaşılır dilde anlatacağım.
Query Store Nedir? Kısaca Mantığı
Query Store’u en basit anlatımla şöyle düşünebilirsiniz
SQL Server’ın kara kutusu.
Sorgularınızın geçmişini, çalıştırıldığı planları, sürelerini, hangi versiyonla daha hızlı/hangi versiyonla daha yavaş olduğunu ve zaman içindeki performans değişimlerini kaydeder.
Sadece hangi sorgunun yavaş olduğunu değil, neden yavaşladığını da görmenizi sağlar.
Çünkü sadece sorgu metnini değil, execution plan versiyonlarını da depoler.
Yani Query Store, “ bu daha dün hızlıydı bugün niye yavaşladı?” sorusuna cevap verebilen en pratik araçtır.
Plan forcing daha stabil
Regressed query detection otomatikleşti
Read replica destekleri gelişti
Query Store artık varsayılan olarak açık geliyor
Wait statistic (bekleme türü) analizi daha doğru
Bu da yavaş sorgu tespitini daha kolay hâle getiriyor.
Ardından çalışma modunu belirlemek için
Bu kadar. SQL Server artık sorgularınızı kaydetmeye başlar.
Aşağıdaki adımlar, 2025’te SQL Server üzerinde çalışan bir DBA’nin günlük yaptığı işin özeti gibidir.
Şimdi Bazı Komutlara Ve Kullanıma Göz Atalım
En Çok CPU Harcayan Sorgular
Bu liste genelde sistemde yük oluşturan asıl “sorunlu” sorguları çıkarır.
Yavaşlayan (Regressed) Sorguları Bulma
SQL Server’ın Query Store içinde en sevilen özelliklerinden biri “sorgu performansı düştü mü?” sorusuna direkt cevap verebilmesidir.
Bu sorgu son bir haftada ortalama süresi artan sorguları sıralar.
Plan Regression (Plan Düşüşü) Tespiti
Bir sorgu dün farklı bir planla çok hızlı çalışırken bugün başka bir plan seçip yavaşlamış olabilir. Query Store bunu net şekilde görmenizi sağlar.
Plan sayısı birden fazla olan sorgulara bakabilirsiniz
Sonra problemli olanların plan detaylarına inilir.
Hızlı Çözüm – Plan Forcing
Sorgu bir zamanlar çok hızlıydı ama bir gün saçma sapan bir plan seçti diye yavaşladıysa, Query Store’un sunduğu FORCE PLAN hayat kurtarır.
SQL Server, bundan sonra o sorgu için bu planı “zorla” kullanır.
Bazen 10 saniyede çözülen problemler olur
Query Store Studio (Grafik Arayüz) ile Yavaş Sorgu Analizi
SSMS içindeki Query Store > Top Resource Consuming Queries ekranı
Ortalama süre
CPU tüketimi
IO maliyeti
Son çalışma zamanı
Plan değişimi
Zaman içi grafikler
gibi tüm kritik bilgileri sunar.
Gerçek hayatta en çok işe yarayan görünümler
Regressed Queries
Overall Resource Consumption
Query Wait Statistics
Top Duration Queries
Bu ekranlar özellikle 2025 ile birlikte daha hızlı ve daha stabil çalışıyo
PAGEIOLATCH_SH → Disk okuma problemi
CXPACKET → Paralellik sorunu
WRITELOG → Log yazımı yavaş
LCK_M_XXX → Kilitlenme
Query Store artık bu beklemeleri daha net şekilde ilişkilendirerek gösteriyor.
Bu da “sorgu mu suçlu? yoksa disk mi?” sorusunun cevabını hızla bulmayı saglıyo
2025 İçin Önerilen Query Store Ayarları
Güncel Microsoft önerileri ışığında pratik ayarlar
AUTO modu 2025’te artık çok daha akıllı. Gereksiz sorguları kaydetmez, sistemi yormaz
Veritabanı büyüdükçe ve trafik arttıkça, yavaşlayan sorgular doğal bir durum hâline gelir. Fakat bunları tespit etmek eskiden büyük vakit alırken artık Query Store sayesinde dakikalar içinde bulunabiliyor.
Özellikle plan değişimlerinin izlenebilmesi, bekleme türlerinin analiz edilebilmesi ve CPU/IO tüketim grafikleri Query Store’u 2025’te SQL Server için “olmazsa olmaz” bir performans aracı hâline getiriyor.
Bu konuda bu kadar umarım eksik ve ya atladığım yer yoktur elimden geldiğince sade anlaşılır şekilde yazmaya gayret ettim. Hepinize teşekkürler. Son olarak Konu içerisinde bulunan kodları microsoft başta olmak üzere çeşitli kaynaklardan aldım.
Query Store Nedir? Kısaca Mantığı
Query Store’u en basit anlatımla şöyle düşünebilirsiniz
SQL Server’ın kara kutusu.
Sorgularınızın geçmişini, çalıştırıldığı planları, sürelerini, hangi versiyonla daha hızlı/hangi versiyonla daha yavaş olduğunu ve zaman içindeki performans değişimlerini kaydeder.
Sadece hangi sorgunun yavaş olduğunu değil, neden yavaşladığını da görmenizi sağlar.
Çünkü sadece sorgu metnini değil, execution plan versiyonlarını da depoler.
Yani Query Store, “ bu daha dün hızlıydı bugün niye yavaşladı?” sorusuna cevap verebilen en pratik araçtır.
2025 İtibariyle Query Store’da Ne Değişti?
SQL Server’ın yeni sürümleri Query Store’u daha güçlü bir hâle getirdi:Plan forcing daha stabil
Regressed query detection otomatikleşti
Read replica destekleri gelişti
Query Store artık varsayılan olarak açık geliyor
Wait statistic (bekleme türü) analizi daha doğru
Bu da yavaş sorgu tespitini daha kolay hâle getiriyor.
Query Store’u Açmak(Komutlar ile)
Her ne kadar yeni sürümlerde varsayılan açık gelse de bazı projelerde manuel açmanız gerekebilir.
SQL:
ALTER DATABASE VeriTabanim
SET QUERY_STORE = ON;
Ardından çalışma modunu belirlemek için
SQL:
ALTER DATABASE VeriTabanim
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);
Yavaş Sorguyu Bulma – Adım Adım Pratik Yöntem
Query Store’un güzelliği şu: Veriler zaten toplanmış oluyor. Asıl olay doğru grafiğe ya da doğru rapora bakmak.Aşağıdaki adımlar, 2025’te SQL Server üzerinde çalışan bir DBA’nin günlük yaptığı işin özeti gibidir.
Şimdi Bazı Komutlara Ve Kullanıma Göz Atalım
En Çok CPU Harcayan Sorgular
SQL:
SELECT TOP 20
qsq.query_id,
qt.query_sql_text,
SUM(rs.avg_cpu_time) AS OrtalamaCPU,
SUM(rs.count_executions) AS CalismaSayisi
FROM sys.query_store_query_text qt
JOIN sys.query_store_query qsq ON qt.query_text_id = qsq.query_text_id
JOIN sys.query_store_plan qsp ON qsp.query_id = qsq.query_id
JOIN sys.query_store_runtime_stats rs ON rs.plan_id = qsp.plan_id
GROUP BY qsq.query_id, qt.query_sql_text
ORDER BY OrtalamaCPU DESC;
Bu liste genelde sistemde yük oluşturan asıl “sorunlu” sorguları çıkarır.
Yavaşlayan (Regressed) Sorguları Bulma
SQL Server’ın Query Store içinde en sevilen özelliklerinden biri “sorgu performansı düştü mü?” sorusuna direkt cevap verebilmesidir.
SQL:
SELECT
p.query_id,
qt.query_sql_text,
p.plan_id,
rs.avg_duration
FROM sys.query_store_plan p
JOIN sys.query_store_query_text qt ON p.query_id = qt.query_text_id
JOIN sys.query_store_runtime_stats rs ON rs.plan_id = p.plan_id
WHERE rs.last_execution_time > DATEADD(day, -7, GETDATE())
ORDER BY rs.avg_duration DESC;
Bu sorgu son bir haftada ortalama süresi artan sorguları sıralar.
Plan Regression (Plan Düşüşü) Tespiti
Bir sorgu dün farklı bir planla çok hızlı çalışırken bugün başka bir plan seçip yavaşlamış olabilir. Query Store bunu net şekilde görmenizi sağlar.
Plan sayısı birden fazla olan sorgulara bakabilirsiniz
SQL:
SELECT query_id, COUNT(*) AS PlanSayisi
FROM sys.query_store_plan
GROUP BY query_id
HAVING COUNT(*) > 1;
Hızlı Çözüm – Plan Forcing
Sorgu bir zamanlar çok hızlıydı ama bir gün saçma sapan bir plan seçti diye yavaşladıysa, Query Store’un sunduğu FORCE PLAN hayat kurtarır.
SQL:
EXEC sys.sp_query_store_force_plan
@query_id = 120,
@plan_id = 450;
Bazen 10 saniyede çözülen problemler olur
Query Store Studio (Grafik Arayüz) ile Yavaş Sorgu Analizi
SSMS içindeki Query Store > Top Resource Consuming Queries ekranı
Ortalama süre
CPU tüketimi
IO maliyeti
Son çalışma zamanı
Plan değişimi
Zaman içi grafikler
gibi tüm kritik bilgileri sunar.
Gerçek hayatta en çok işe yarayan görünümler
Regressed Queries
Overall Resource Consumption
Query Wait Statistics
Top Duration Queries
Bu ekranlar özellikle 2025 ile birlikte daha hızlı ve daha stabil çalışıyo
Bekleme Türleri (Wait Stats) ile Sorunu Netleştirme
Yavaş sorgu çoğu zaman CPU değil, başka bir bekleme türünden kaynaklanırPAGEIOLATCH_SH → Disk okuma problemi
CXPACKET → Paralellik sorunu
WRITELOG → Log yazımı yavaş
LCK_M_XXX → Kilitlenme
Query Store artık bu beklemeleri daha net şekilde ilişkilendirerek gösteriyor.
Bu da “sorgu mu suçlu? yoksa disk mi?” sorusunun cevabını hızla bulmayı saglıyo
2025 İçin Önerilen Query Store Ayarları
Güncel Microsoft önerileri ışığında pratik ayarlar
SQL:
ALTER DATABASE VeriTabanim
SET QUERY_STORE = ON
(
CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30),
MAX_STORAGE_SIZE_MB = 512,
INTERVAL_LENGTH_MINUTES = 15,
QUERY_CAPTURE_MODE = AUTO
);
Veritabanı büyüdükçe ve trafik arttıkça, yavaşlayan sorgular doğal bir durum hâline gelir. Fakat bunları tespit etmek eskiden büyük vakit alırken artık Query Store sayesinde dakikalar içinde bulunabiliyor.
Özellikle plan değişimlerinin izlenebilmesi, bekleme türlerinin analiz edilebilmesi ve CPU/IO tüketim grafikleri Query Store’u 2025’te SQL Server için “olmazsa olmaz” bir performans aracı hâline getiriyor.
Bu konuda bu kadar umarım eksik ve ya atladığım yer yoktur elimden geldiğince sade anlaşılır şekilde yazmaya gayret ettim. Hepinize teşekkürler. Son olarak Konu içerisinde bulunan kodları microsoft başta olmak üzere çeşitli kaynaklardan aldım.








