Demo modu

Plan değişimi P446

Orta İyileşme 14539,8× Bekliyor

DB-9 · query_id 1734 · değişim 28.09.2026 11:00 · plan 483 → 521 · Dönüşümlü (6 el değiştirme) · Sorgu detayı ve analizleri

Güven gerekçesiOrta: birden fazla aday (FORCED, GROWTH, PARAM) — rakip açıklamalar. Zayıf karşı kanıt: HIGH_VARIANCE, METADATA_GAP.

Bu sorgunun diğer plan değişimleri

Önceki kararlar; ters yöndeki değişim aynı planlar arasında geri dönüştür.
#PlanlarYönDurumKararTespit
P447 514 → 546 Kötüleşme 188,6× Bekliyor – 9.10.2026 14:51

Sorgu metni

SQL
(@instance_uuid uniqueidentifier,@window_days int)DELETE r
FROM dbo.agent_job_runs AS r
JOIN dbo.agent_jobs AS j ON j.agent_job_uuid = r.agent_job_uuid
WHERE j.instance_uuid = @instance_uuid
  AND r.run_at < DATEADD(day, -@window_days, SYSUTCDATETIME())

1. Etki özeti

MetrikEski plan (483)Yeni plan (521)Değişim
Çalışma146116
İptal / hata0 / 00 / 0
Süre ort. (ms)1.024,70,1-100%
Süre maks. (ms)148.904,50,3-100%
Süre sapma (ms)12.280,80,0-100%
CPU ort. (ms)12,40,1-99%
CPU maks. (ms)1.611,70,3-100%
Mantıksal okuma ort.144,42,0-99%
Mantıksal okuma maks.223,02,0-99%
Fiziksel okuma11,50,0-100%
Yazma0,00,0
Bellek (KB)0,00,0
Tempdb (KB)0,00,0
DOP1,01,00%
Satır ort.0,00,0
Satır maks.0,00,0
Dönem27.09.2026 22:00 → 29.09.2026 03:00 28.09.2026 11:00 → 29.09.2026 02:00

Bekleme kategorileri

ms / çalışma
Bekleme kategorisiEski plan (483)Yeni plan (521)
Idle1.006,6–
Memory15,9–
CPU5,2–
Buffer IO0,6–

2. Zaman çizelgesi

StatsUpdated dbo.agent_jobs._WA_Sys_0000000A_6DEC4894 (2026-09-28 00:15)StatsUpdated dbo.agent_jobs._WA_Sys_0000000D_6DEC4894 (2026-09-28 08:41)TableGrowth dbo.agent_jobs (2026-09-27 00:00 – 2026-09-28 00:00)TableGrowth dbo.agent_job_runs (2026-09-27 00:00 – 2026-09-28 00:00)Değişim: 28.09.2026 11:00Eski plan 27.09.2026 22:00: 1,1 msEski plan 27.09.2026 23:00: 1,0 msEski plan 28.09.2026 00:00: 0,9 msEski plan 28.09.2026 01:00: 0,9 msEski plan 28.09.2026 02:00: 0,9 msEski plan 28.09.2026 08:00: 7,9 msEski plan 28.09.2026 09:00: 1,1 msEski plan 28.09.2026 10:00: 1,0 msEski plan 28.09.2026 11:00: 1,1 msEski plan 28.09.2026 14:00: 1,3 msEski plan 28.09.2026 15:00: 1,4 msEski plan 28.09.2026 16:00: 1,4 msEski plan 28.09.2026 17:00: 1,4 msEski plan 28.09.2026 23:00: 2,7 msEski plan 29.09.2026 00:00: 18.615,6 msEski plan 29.09.2026 01:00: 158,5 msEski plan 29.09.2026 02:00: 3,6 msYeni plan 28.09.2026 11:00: 0,1 msYeni plan 28.09.2026 12:00: 0,1 msYeni plan 28.09.2026 13:00: 0,1 msYeni plan 28.09.2026 14:00: 0,1 msYeni plan 28.09.2026 17:00: 0,1 msYeni plan 28.09.2026 18:00: 0,1 msYeni plan 28.09.2026 19:00: 0,1 msYeni plan 28.09.2026 20:00: 0,1 msYeni plan 28.09.2026 21:00: 0,1 msYeni plan 28.09.2026 22:00: 0,1 msYeni plan 28.09.2026 23:00: 0,1 msYeni plan 29.09.2026 00:00: 0,2 msYeni plan 29.09.2026 01:00: 0,1 msmax 18.615,6 ms 09-27 00:00 09-29 02: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
StatsUpdateddbo.agent_jobs._WA_Sys_0000000A_6DEC489428.09.2026 00:15 → 16/16 hayırhayır
StatsUpdateddbo.agent_jobs._WA_Sys_0000000D_6DEC489428.09.2026 08:41 → 16/16 hayırhayır
PlanForcedbilinmiyor bilinmiyorbilinmiyor
TableGrowthdbo.agent_jobs27.09.2026 00:00 – 28.09.2026 00:00 16|0.21 → 17|0.21 bilinmiyorbilinmiyor
TableGrowthdbo.agent_job_runs27.09.2026 00:00 – 28.09.2026 00:00 1496|0.91 → 3919|2.09 bilinmiyorbilinmiyor

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

  • Yalnız eski planda erişim: dbo.agent_jobs Clustered Index Seek [CIX_agent_jobs]; dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs]
  • Yalnız yeni planda erişim: dbo.agent_job_runs Index Seek [IX_agent_job_runs_window]; dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs] (lookup); dbo.agent_jobs Index Seek [PK_agent_jobs]
  • Yalnız eski planda join: Nested Loops (Inner Join)
  • Yalnız yeni planda join: Nested Loops (Inner Join) ×3
  • Tahmini maliyet: 0.042 → 0.052; tahmini satır: 1 → 4.2
Eski planın index'leri
dbo.agent_job_runs.CIX_agent_job_runs, dbo.agent_jobs.CIX_agent_jobs
Yeni planın index'leri
dbo.agent_job_runs.CIX_agent_job_runs, dbo.agent_job_runs.IX_agent_job_runs_window, dbo.agent_jobs.PK_agent_jobs

4. Neden adayları

ölçüm ve eşikle; kesin değildir
KodÖlçülenEşikSonuçAçıklama
STATS 2 istatistik güncellendi, planlar kullanmıyor desteklemiyor Pencerede güncellenen ama iki planın da kullanmadığı istatistikler aday değil: dbo.agent_jobs._WA_Sys_0000000A_6DEC4894, dbo.agent_jobs._WA_Sys_0000000D_6DEC4894.
FORCEDmekanik yeni plan zorlanmış destekliyor Yeni plan QDS'te zorlanmış (sp_query_store_force_plan); zorlama zamanı QDS'te yok.
GROWTH dbo.agent_jobs: satır 16 → 17 (%+6), boyut 0.21 → 0.21 MB (%0)≥ %20 desteklemiyor dbo.agent_jobs eski planın döneminden değişime kadar satır %+6, boyut %0 değişti (2026-09-27 → 2026-09-28).
GROWTH dbo.agent_job_runs: satır 1,496 → 3,919 (%+162), boyut 0.91 → 2.09 MB (%+130)≥ %20 destekliyor dbo.agent_job_runs eski planın döneminden değişime kadar satır %+162, boyut %+130 değişti (2026-09-27 → 2026-09-28).
WORKLOAD çalışma başına satır 0 → 0 (1×)≥ 2× desteklemiyor Çalışma başına satır benzer (0 → 0): iş yükü farkı yok.
PARAM baskın plan 6 kez el değiştirdi≥ 3 destekliyor İki plan aynı dönemde sırayla kullanılıyor (6 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 #P446 | DB: DB-9 | Improvement | Confidence: Medium (review pending)
Query: (@instance_uuid uniqueidentifier,@window_days int)DELETE r FROM dbo.agent_job_runs AS r JOIN dbo.agent_jobs AS j ON j.agent_job_uuid = r.agent_job_uuid WHERE j.instance_uuid = @instance_uuid AND r.run_at < DATEADD(day, -@window_days, SYSUTCDATETIME())
Change: 2026-09-28 11:00 UTC, plan 483 → 521, pattern: Alternating (6 switches)
Impact (Query Store, per execution): duration 1024.7 → 0.1 ms (-100%); CPU 12.4 → 0.1 ms (-99%); reads 144 → 2 (-99%); rows 0 → 0
Plan difference: Access only in the old plan: dbo.agent_jobs Clustered Index Seek [CIX_agent_jobs]; dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs]; Access only in the new plan: dbo.agent_job_runs Index Seek [IX_agent_job_runs_window]; dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs] (lookup); dbo.agent_jobs Index Seek [PK_agent_jobs]; Join only in the old plan: Nested Loops (Inner Join); Join only in the new plan: Nested Loops (Inner Join) ×3
Candidate cause: FORCED — The new plan is forced in Query Store (sp_query_store_force_plan); Query Store does not record when it was forced.
Candidate cause: GROWTH — From the old plan's period to the change, dbo.agent_job_runs rows changed +162% and size +130% (2026-09-27 → 2026-09-28).
Candidate cause: PARAM — The two plans alternate in the same period (6 switches): plan choice depends on the parameter value rather than an event (parameter sensitivity).
Counter-evidence: HIGH_VARIANCE — The old plan's duration standard deviation is 1198% of the average: the average is not reliable.
Counter-evidence: METADATA_GAP — Metadata collection started on 2026-09-27 and the change was on 2026-09-28: index, statistics and module events could not be evaluated (no data, not no events).
Confidence rationale: Medium: more than one candidate (FORCED, GROWTH, PARAM) — competing explanations. Weak counter-evidence: HIGH_VARIANCE, 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.