Demo modu

Plan değişimi P409

Düşük İyileşme 74,4× Bekliyor

DB-11 · query_id 14619 · değişim 30.09.2026 10:00 · plan 12529 → 13624 · Geçiş · Sorgu detayı ve analizleri

Güven gerekçesiDüşük: destekleyen aday yok — neden bilinmiyor. Olay verisi eksik (metadata toplama değişimden sonra başladı).

Sorgu metni

SQL
(@keys nvarchar(4000),@from datetime,@to datetime)SELECT q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc, SUM(q.TotalDurationMs) / NULLIF(SUM(q.Executions), 0)
FROM OPENJSON(@keys) WITH (s int '$.s', d sysname '$.d', h varchar(18) '$.h') AS k
JOIN perf.QueryDailyStats AS q ON q.ServerID = k.s AND q.DatabaseName = k.d AND q.query_hash = CONVERT(binary(8), k.h, 1)
WHERE q.StatDateUtc >= @from AND q.StatDateUtc <= @to
GROUP BY q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc

1. Etki özeti

MetrikEski plan (12529)Yeni plan (13624)Değişim
Çalışma149211
İptal / hata0 / 00 / 0
Süre ort. (ms)287,63,9-99%
Süre maks. (ms)657,315,5-98%
Süre sapma (ms)247,31,2-100%
CPU ort. (ms)287,33,9-99%
CPU maks. (ms)657,315,5-98%
Mantıksal okuma ort.108,71.147,2+955%
Mantıksal okuma maks.181,01.475,0+715%
Fiziksel okuma0,00,0
Yazma0,00,0
Bellek (KB)1.024,01.024,00%
Tempdb (KB)0,00,0
DOP1,01,00%
Satır ort.197,2333,3+69%
Satır maks.432,0432,00%
Dönem30.09.2026 10:00 → 5.10.2026 12:00 30.09.2026 10:00 → 30.09.2026 23:00

Bekleme kategorileri

ms / çalışma
Bekleme kategorisiEski plan (12529)Yeni plan (13624)
Memory–0,0
CPU0,6–

2. Zaman çizelgesi

Değişim: 30.09.2026 10:00Eski plan 30.09.2026 10:00: 470,6 msEski plan 30.09.2026 11:00: 2,1 msEski plan 30.09.2026 15:00: 1,6 msEski plan 30.09.2026 20:00: 1,6 msEski plan 30.09.2026 21:00: 1,6 msEski plan 30.09.2026 22:00: 517,1 msEski plan 4.10.2026 13:00: 1,3 msEski plan 4.10.2026 22:00: 1,2 msEski plan 5.10.2026 01:00: 1,2 msEski plan 5.10.2026 02:00: 1,2 msEski plan 5.10.2026 09:00: 1,3 msEski plan 5.10.2026 10:00: 1,2 msEski plan 5.10.2026 11:00: 1,2 msYeni plan 30.09.2026 10:00: 3,6 msYeni plan 30.09.2026 11:00: 3,6 msYeni plan 30.09.2026 16:00: 3,9 msYeni plan 30.09.2026 19:00: 2,6 msYeni plan 30.09.2026 20:00: 4,0 msYeni plan 30.09.2026 21:00: 3,9 msYeni plan 30.09.2026 22:00: 2,4 msmax 517,1 ms 09-30 10:00 10-05 11:00
Eski planYeni plan ┆ değişim anı (kesik çizgi)░ olay (bant: zamanı aralık olarak bilinen)

Pencerede olay yok — metadata toplama 1.10.2026 tarihinde başladı, değişimden önceki olaylar görülemez (veri yok).

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

  • Yalnız eski planda erişim: perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]
  • Yalnız yeni planda erişim: perf.QueryDailyStats Index Seek [IX_QueryDailyStats_Query]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats] (lookup)
  • Yalnız eski planda join: Nested Loops (Inner Join)
  • Yalnız yeni planda join: Nested Loops (Inner Join) ×2
  • Tahmini maliyet: 0.017 → 0.188; tahmini satır: 1 → 18.6
Eski planın index'leri
perf.QueryDailyStats.PK_QueryDailyStats
Yeni planın index'leri
perf.QueryDailyStats.IX_QueryDailyStats_Query, perf.QueryDailyStats.PK_QueryDailyStats

4. Neden adayları

ölçüm ve eşikle; kesin değildir
KodÖlçülenEşikSonuçAçıklama
WORKLOAD çalışma başına satır 197.23 → 333.3 (1.69×)≥ 2× desteklemiyor Çalışma başına satır benzer (197.23 → 333.3): iş yükü farkı yok.
PARAM baskın plan 2 kez el değiştirdi≥ 3 desteklemiyor Planlar dönüşümlü değil: yeni plan eskisinin yerini aldı.

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 #P409 | DB: DB-11 | Improvement | Confidence: Low (review pending)
Query: (@keys nvarchar(?),@from datetime,@to datetime)SELECT q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc, SUM(q.TotalDurationMs) / NULLIF(SUM(q.Executions), ?) FROM OPENJSON(@keys) WITH (s int ?, d sysname ?, h varchar(?) ?) AS k JOIN perf.QueryDailyStats AS q ON q.ServerID = k.s AND q.DatabaseName = k.d AND q.query_hash = CONVERT(binary(?), k.h, ?) WHERE q.StatDateUtc >= @from AND q.StatDateUtc <= @to GROUP BY q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc
Change: 2026-09-30 10:00 UTC, plan 12529 → 13624, pattern: Transition
Impact (Query Store, per execution): duration 287.6 → 3.9 ms (-99%); CPU 287.3 → 3.9 ms (-99%); reads 109 → 1,147 (+955%); rows 197.23 → 333.3 (+69%)
Plan difference: Access only in the old plan: perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]; Access only in the new plan: perf.QueryDailyStats Index Seek [IX_QueryDailyStats_Query]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats] (lookup); Join only in the old plan: Nested Loops (Inner Join); Join only in the new plan: Nested Loops (Inner Join) ×2
Candidate cause: none — cause unknown.
Counter-evidence: METADATA_GAP — Metadata collection started on 2026-10-01 and the change was on 2026-09-30: index, statistics and module events could not be evaluated (no data, not no events).
Confidence rationale: Low: no supporting candidate — cause unknown. Event data is missing (metadata collection started after the change).
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.