Demo modu

Plan değişimi P411

Orta İyileşme 78,0× Bekliyor

DB-11 · query_id 27966 · rag.usp_QueryCandidates_Mark · değişim 1.10.2026 21:00 · plan 30730 → 30856 · Dönüşümlü (7 el değiştirme) · Sorgu detayı ve analizleri

Güven gerekçesiOrta: birden fazla aday (STATS, WORKLOAD + PARAM) — rakip açıklamalar. Zayıf karşı kanıt: LOW_SAMPLE, METADATA_GAP.

Sorgu metni

SQL
(@days int,@from date,@to date)SELECT q.ServerID, q.DatabaseName, q.query_hash,
           SUM(IIF(q.StatDateUtc >= @from, ISNULL(q.Executions, 0), 0)) AS CExec,
           SUM(IIF(q.StatDateUtc >= @from, ISNULL(q.TotalCpuMs, 0), 0)) AS CCpu,
           SUM(IIF(q.StatDateUtc >= @from, ISNULL(q.TotalDurationMs, 0), 0)) AS CDur,
           SUM(IIF(q.StatDateUtc >= @from, ISNULL(CAST(q.BlockedOthersCount AS bigint), 0), 0)) AS CBlock,
           SUM(IIF(q.StatDateUtc < @from, ISNULL(q.Executions, 0), 0)) AS PExec,
           SUM(IIF(q.StatDateUtc < @from, ISNULL(q.TotalDurationMs, 0), 0)) AS PDur
    INTO #s
    FROM perf.QueryDailyStats AS q
    JOIN DBA.ManagedServers AS ms ON ms.ServerID = q.ServerID AND ISNULL(ms.IsActive, 0) = 1
    JOIN DBA.MonitoredDatabase AS md ON md.ServerID = q.ServerID AND md.DatabaseName = q.DatabaseName AND md.IsActive = 1
    WHERE q.StatDateUtc >= DATEADD(day, -@days, CAST(@from AS datetime)) AND q.StatDateUtc <= @to
    GROUP BY q.ServerID, q.DatabaseName, q.query_hash

1. Etki özeti

MetrikEski plan (30730)Yeni plan (30856)Değişim
Çalışma36358
İptal / hata0 / 00 / 0
Süre ort. (ms)112,01,4-99%
Süre maks. (ms)175,35,3-97%
Süre sapma (ms)16,20,4-98%
CPU ort. (ms)111,91,4-99%
CPU maks. (ms)174,65,3-97%
Mantıksal okuma ort.40.897,6123,0-100%
Mantıksal okuma maks.48.996,0149,0-100%
Fiziksel okuma36,20,0-100%
Yazma44,60,8-98%
Bellek (KB)8.629,81.024,0-88%
Tempdb (KB)682,7128,0-81%
DOP1,01,00%
Satır ort.4.198,80,0-100%
Satır maks.4.500,00,0-100%
Dönem1.10.2026 21:00 → 8.10.2026 09:00 1.10.2026 21:00 → 6.10.2026 06:00

Bekleme kategorileri

ms / çalışma
Bekleme kategorisiEski plan (30730)Yeni plan (30856)
CPU0,10,0
Memory0,4–
Other Disk IO0,0–

2. Zaman çizelgesi

StatsUpdated perf.QueryDailyStats.PK_QueryDailyStats (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats.PK_QueryDailyStats (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 (2026-09-30 22:53)StatsUpdated perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 (2026-09-30 22:53)StatsUpdated perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats.IX_QueryDailyStats_Query (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats.IX_QueryDailyStats_Query (2026-10-01 21:13)StatsUpdated perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 (2026-10-01 21:00)Değişim: 1.10.2026 21:00Eski plan 1.10.2026 21:00: 69,5 msEski plan 3.10.2026 03:00: 93,5 msEski plan 4.10.2026 08:00: 79,1 msEski plan 5.10.2026 03:00: 82,2 msEski plan 5.10.2026 21:00: 112,1 msEski plan 6.10.2026 00:00: 114,3 msEski plan 6.10.2026 03:00: 109,2 msEski plan 6.10.2026 22:00: 115,2 msEski plan 7.10.2026 20:00: 122,6 msEski plan 8.10.2026 08:00: 175,3 msYeni plan 1.10.2026 21:00: 1,4 msYeni plan 2.10.2026 00:00: 1,6 msYeni plan 2.10.2026 01:00: 1,7 msYeni plan 2.10.2026 02:00: 1,3 msYeni plan 2.10.2026 16:00: 1,4 msYeni plan 2.10.2026 17:00: 1,4 msYeni plan 2.10.2026 18:00: 1,4 msYeni plan 4.10.2026 08:00: 1,7 msYeni plan 4.10.2026 13:00: 1,6 msYeni plan 4.10.2026 22:00: 1,4 msYeni plan 5.10.2026 00:00: 1,5 msYeni plan 5.10.2026 02:00: 1,6 msYeni plan 5.10.2026 09:00: 1,5 msYeni plan 5.10.2026 10:00: 1,5 msYeni plan 5.10.2026 12:00: 1,5 msYeni plan 5.10.2026 13:00: 1,4 msYeni plan 5.10.2026 17:00: 1,4 msYeni plan 5.10.2026 18:00: 1,3 msYeni plan 5.10.2026 20:00: 1,8 msYeni plan 5.10.2026 21:00: 1,4 msYeni plan 5.10.2026 22:00: 1,5 msYeni plan 5.10.2026 23:00: 1,2 msYeni plan 6.10.2026 00:00: 1,3 msYeni plan 6.10.2026 01:00: 1,3 msYeni plan 6.10.2026 05:00: 1,3 msmax 175,3 ms 09-30 22:53 10-08 08:00
Eski planYeni plan ┆ değişim anı (kesik çizgi)░ olay (bant: zamanı aralık olarak bilinen)

Olaylar

OlayNesneZamanÖnce → sonra Eski plan kullanıyorYeni plan kullanıyor
StatsUpdatedperf.QueryDailyStats.PK_QueryDailyStats30.09.2026 22:56 → 4761/4761 evethayır
StatsUpdatedperf.QueryDailyStats.PK_QueryDailyStats1.10.2026 21:13 → 8811/8811 evethayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000008_5D80D6A130.09.2026 22:56 → 4761/4761 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000008_5D80D6A11.10.2026 21:13 → 8860/8860 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000003_5D80D6A130.09.2026 22:56 → 4761/4761 evethayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000003_5D80D6A11.10.2026 21:13 → 8811/8811 evethayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000007_5D80D6A130.09.2026 22:56 → 4761/4761 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000007_5D80D6A11.10.2026 21:13 → 8814/8814 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000004_5D80D6A130.09.2026 22:56 → 4761/4761 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000004_5D80D6A11.10.2026 21:13 → 8811/8811 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000015_5D80D6A130.09.2026 22:56 → 4715/4715 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000015_5D80D6A11.10.2026 21:13 → 8814/8814 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000016_5D80D6A130.09.2026 22:53 → 4761/4761 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000016_5D80D6A11.10.2026 21:13 → 8814/8814 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000018_5D80D6A130.09.2026 22:53 → 4761/4761 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000018_5D80D6A11.10.2026 21:13 → 8814/8814 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_0000001B_5D80D6A130.09.2026 22:56 → 4715/4715 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_0000001B_5D80D6A11.10.2026 21:13 → 8814/8814 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats.IX_QueryDailyStats_Query30.09.2026 22:56 → 4761/4761 evethayır
StatsUpdatedperf.QueryDailyStats.IX_QueryDailyStats_Query1.10.2026 21:13 → 8811/8811 evethayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000006_5D80D6A130.09.2026 22:56 → 4712/4712 hayırhayır
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000006_5D80D6A11.10.2026 21:00 → 4712/4712 hayırhayır sıra belirsiz

3. Plan karşılaştırması

  • Yalnız eski planda erişim: DBA.ManagedServers Clustered Index Scan [PK__ManagedS__C56AC8865E257CFD]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]
  • Yalnız yeni planda erişim: perf.QueryDailyStats Table Scan; DBA.ManagedServers Clustered Index Seek [PK__ManagedS__C56AC8865E257CFD]
  • Yalnız eski planda join: Hash Match (Inner Join); Nested Loops (Inner Join)
  • Yalnız yeni planda join: Nested Loops (Inner Join) ×2
  • Tahmini maliyet: 0.447 → 0.031; tahmini satır: 90.5 → 1
Eski planın index'leri
DBA.ManagedServers.PK__ManagedS__C56AC8865E257CFD, perf.QueryDailyStats.PK_QueryDailyStats, DBA.MonitoredDatabase.PK_MonitoredDatabase
Yeni planın index'leri
DBA.MonitoredDatabase.PK_MonitoredDatabase, DBA.ManagedServers.PK__ManagedS__C56AC8865E257CFD

4. Neden adayları

ölçüm ve eşikle; kesin değildir
KodÖlçülenEşikSonuçAçıklama
STATS perf.QueryDailyStats.PK_QueryDailyStats güncellendi 2026-09-30 22:56 (örnekleme %100); pencerede 2 güncellemedeğişimden önceki 48 saat destekliyor İstatistik perf.QueryDailyStats.PK_QueryDailyStats 2026-09-30 22:56 güncellendi (örnekleme %100); pencerede 2 güncelleme; planlar bu istatistiği kullanıyor.
STATS perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 güncellendi 2026-09-30 22:56 (örnekleme %100); pencerede 2 güncellemedeğişimden önceki 48 saat destekliyor İstatistik perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 2026-09-30 22:56 güncellendi (örnekleme %100); pencerede 2 güncelleme; planlar bu istatistiği kullanıyor.
STATS perf.QueryDailyStats.IX_QueryDailyStats_Query güncellendi 2026-09-30 22:56 (örnekleme %100); pencerede 2 güncellemedeğişimden önceki 48 saat destekliyor İstatistik perf.QueryDailyStats.IX_QueryDailyStats_Query 2026-09-30 22:56 güncellendi (örnekleme %100); pencerede 2 güncelleme; planlar bu istatistiği kullanıyor.
STATS 8 istatistik güncellendi, planlar kullanmıyor desteklemiyor Pencerede güncellenen ama iki planın da kullanmadığı istatistikler aday değil: perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 (+3).
WORKLOAD çalışma başına satır 4198.83 → 0 (4198833333333.33×)≥ 2× destekliyor Planlar farklı iş yükü görüyor: çalışma başına satır 4198.83 → 0. Planlar farklı parametre/parti büyüklüğü için derlenmiş olabilir.
PARAM baskın plan 7 kez el değiştirdi≥ 3 destekliyor İki plan aynı dönemde sırayla kullanılıyor (7 el değiştirme): plan seçimi bir olaydan çok parametre değerine bağlı (parametre duyarlılığı).

5. Karşı kanıtlar

6. Korpus metni önizlemesi

onaylanınca RAG hafızasına bu metin girer (başlığa onaylayan eklenir)
6. Korpus metni önizlemesi
Plan change case #P411 | DB: DB-11 | Improvement | Confidence: Medium (review pending)
Query: (@days int,@from date,@to date)SELECT q.ServerID, q.DatabaseName, q.query_hash, SUM(IIF(q.StatDateUtc >= @from, ISNULL(q.Executions, ?), ?)) AS CExec, SUM(IIF(q.StatDateUtc >= @from, ISNULL(q.TotalCpuMs, ?), ?)) AS CCpu, SUM(IIF(q.StatDateUtc >= @from, ISNULL(q.TotalDurationMs, ?), ?)) AS CDur, SUM(IIF(q.StatDateUtc >= @from, ISNULL(CAST(q.BlockedOthersCount AS bigint), ?), ?)) AS CBlock, SUM(IIF(q.StatDateUtc < @from, ISNULL(q.Executions, ?), ?)) AS PExec, SUM(IIF(q.StatDateUtc < @from, ISNULL(q.TotalDurationMs, ?), ?)) AS PDur INTO #s FROM perf.QueryDailyStats AS q JOIN DBA.ManagedServers AS ms ON ms.ServerID = q.ServerID AND ISNULL(ms.IsActive, ?) = ? JOIN DBA.MonitoredDatabase AS md ON md.ServerID = q.ServerID AND md.DatabaseName = q.DatabaseName AND md.IsActive = ? WHERE q.StatDateUtc >= DATEADD(day, -@days, CAST(@from AS datetime)) AND q.StatDateUtc <= @to GROUP BY q.ServerID, q.DatabaseName, q.query_hash
Change: 2026-10-01 21:00 UTC, plan 30730 → 30856, pattern: Alternating (7 switches)
Impact (Query Store, per execution): duration 112 → 1.4 ms (-99%); CPU 111.9 → 1.4 ms (-99%); reads 40,898 → 123 (-100%); rows 4198.83 → 0 (-100%)
Plan difference: Access only in the old plan: DBA.ManagedServers Clustered Index Scan [PK__ManagedS__C56AC8865E257CFD]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]; Access only in the new plan: perf.QueryDailyStats Table Scan; DBA.ManagedServers Clustered Index Seek [PK__ManagedS__C56AC8865E257CFD]; Join only in the old plan: Hash Match (Inner Join); Nested Loops (Inner Join); Join only in the new plan: Nested Loops (Inner Join) ×2
Candidate cause: STATS — Statistic perf.QueryDailyStats.PK_QueryDailyStats was updated 2026-09-30 22:56 (sampled 100%); 2 updates in the window; the plans use this statistic.
Candidate cause: STATS — Statistic perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 was updated 2026-09-30 22:56 (sampled 100%); 2 updates in the window; the plans use this statistic.
Candidate cause: STATS — Statistic perf.QueryDailyStats.IX_QueryDailyStats_Query was updated 2026-09-30 22:56 (sampled 100%); 2 updates in the window; the plans use this statistic.
Candidate cause: WORKLOAD — The plans see a different workload: rows per execution 4198.83 → 0. The plans may have been compiled for different parameters or batch sizes.
Candidate cause: PARAM — The two plans alternate in the same period (7 switches): plan choice depends on the parameter value rather than an event (parameter sensitivity).
Counter-evidence: LOW_SAMPLE — The old plan ran only 36 times: the sample is small and the average is weak.
Counter-evidence: METADATA_GAP — Metadata collection started on 2026-10-01 and the change was on 2026-10-01: index, statistics and module events could not be evaluated (no data, not no events).
Confidence rationale: Medium: more than one candidate (STATS, WORKLOAD + PARAM) — competing explanations. Weak counter-evidence: LOW_SAMPLE, METADATA_GAP.
Note: this is a candidate cause, not proof of the root cause.

7. Karar

Karar vermek için Analyst rolü gerekir.

Karar geçmişi

Kayıt yok

Henüz karar yok.