Plan değişimi P446
Orta İyileşme 14539,8× BekliyorDB-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.| # | Planlar | Yön | Durum | Karar | Tespit |
|---|---|---|---|---|---|
| P447 | 514 → 546 | Kötüleşme 188,6× | Bekliyor | – | 9.10.2026 14:51 |
Sorgu metni
(@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
| Metrik | Eski plan (483) | Yeni plan (521) | Değişim |
|---|---|---|---|
| Çalışma | 146 | 116 | |
| İptal / hata | 0 / 0 | 0 / 0 | |
| Süre ort. (ms) | 1.024,7 | 0,1 | -100% |
| Süre maks. (ms) | 148.904,5 | 0,3 | -100% |
| Süre sapma (ms) | 12.280,8 | 0,0 | -100% |
| CPU ort. (ms) | 12,4 | 0,1 | -99% |
| CPU maks. (ms) | 1.611,7 | 0,3 | -100% |
| Mantıksal okuma ort. | 144,4 | 2,0 | -99% |
| Mantıksal okuma maks. | 223,0 | 2,0 | -99% |
| Fiziksel okuma | 11,5 | 0,0 | -100% |
| Yazma | 0,0 | 0,0 | |
| Bellek (KB) | 0,0 | 0,0 | |
| Tempdb (KB) | 0,0 | 0,0 | |
| DOP | 1,0 | 1,0 | 0% |
| Satır ort. | 0,0 | 0,0 | |
| Satır maks. | 0,0 | 0,0 | |
| Dönem | 27.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 kategorisi | Eski plan (483) | Yeni plan (521) |
|---|---|---|
| Idle | 1.006,6 | – |
| Memory | 15,9 | – |
| CPU | 5,2 | – |
| Buffer IO | 0,6 | – |
2. Zaman çizelgesi
Eski planYeni plan
┆ değişim anı (kesik çizgi)░ olay (bant: zamanı aralık olarak bilinen)
Olaylar
| Olay | Nesne | Zaman | Önce → sonra | Eski plan kullanıyor | Yeni plan kullanıyor | |
|---|---|---|---|---|---|---|
| StatsUpdated | dbo.agent_jobs._WA_Sys_0000000A_6DEC4894 | 28.09.2026 00:15 | → 16/16 | hayır | hayır | |
| StatsUpdated | dbo.agent_jobs._WA_Sys_0000000D_6DEC4894 | 28.09.2026 08:41 | → 16/16 | hayır | hayır | |
| PlanForced | bilinmiyor | bilinmiyor | bilinmiyor | |||
| TableGrowth | dbo.agent_jobs | 27.09.2026 00:00 – 28.09.2026 00:00 | 16|0.21 → 17|0.21 | bilinmiyor | bilinmiyor | |
| TableGrowth | dbo.agent_job_runs | 27.09.2026 00:00 – 28.09.2026 00:00 | 1496|0.91 → 3919|2.09 | bilinmiyor | bilinmiyor |
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çülen | Eşik | Sonuç | 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
- HIGH_VARIANCE (zayıf): Eski planın süre sapması ortalamanın %1198'i: ortalama güvenilir değil.
- METADATA_GAP (zayıf): Metadata toplama 2026-09-27 tarihinde başladı, değişim 2026-09-28: index/istatistik/modül olayları değerlendirilemedi (olay yok değil, veri yok).
6. Korpus metni önizlemesi
onaylanınca RAG hafızasına bu metin girer (başlığa onaylayan eklenir)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.