Plan değişimi P448
Orta Kötüleşme 203,1× BekliyorDB-9 · query_id 1940 · değişim 28.09.2026 10:00 · plan 491 → 518 · Dönüşümlü (5 el değiştirme) · Sorgu detayı ve analizleri
Güven gerekçesiOrta: birden fazla aday (GROWTH, PARAM) — rakip açıklamalar. Zayıf karşı kanıt: HIGH_VARIANCE, METADATA_GAP.
Sorgu metni
(@agent_job_uuid uniqueidentifier,@max_rows int)SELECT TOP (@max_rows) r.run_at, r.run_status, r.duration_seconds FROM dbo.agent_job_runs AS r WHERE r.agent_job_uuid = @agent_job_uuid AND r.step_id = 0 ORDER BY r.run_at DESC
1. Etki özeti
| Metrik | Eski plan (491) | Yeni plan (518) | Değişim |
|---|---|---|---|
| Çalışma | 2.964 | 1.414 | |
| İptal / hata | 0 / 0 | 0 / 0 | |
| Süre ort. (ms) | 0,3 | 54,9 | +20207% |
| Süre maks. (ms) | 149,2 | 25.013,6 | +16661% |
| Süre sapma (ms) | 2,9 | 1.151,8 | +40289% |
| CPU ort. (ms) | 0,2 | 0,4 | +74% |
| CPU maks. (ms) | 38,3 | 8,8 | -77% |
| Mantıksal okuma ort. | 164,7 | 24,5 | -85% |
| Mantıksal okuma maks. | 1.007,0 | 275,0 | -73% |
| Fiziksel okuma | 0,1 | 0,1 | +102% |
| Yazma | 0,0 | 0,0 | |
| Bellek (KB) | 0,0 | 1.022,9 | |
| Tempdb (KB) | 0,0 | 0,0 | |
| DOP | 1,0 | 1,0 | 0% |
| Satır ort. | 80,8 | 98,5 | +22% |
| Satır maks. | 500,0 | 500,0 | 0% |
| Dönem | 27.09.2026 22:00 → 29.09.2026 09:00 | 28.09.2026 10:00 → 29.09.2026 19:00 |
Bekleme kategorileri
ms / çalışma| Bekleme kategorisi | Eski plan (491) | Yeni plan (518) |
|---|---|---|
| Memory | – | 54,5 |
| Buffer IO | 0,0 | 0,0 |
| Unknown | – | 0,0 |
| Idle | 0,0 | – |
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 | |
|---|---|---|---|---|---|---|
| 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_job_runs Index Seek [IX_agent_job_runs_outcome]; dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs] (lookup)
- Yalnız yeni planda erişim: dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs]
- Yalnız eski planda join: Nested Loops (Inner Join)
- Tahmini maliyet: 0.007 → 0.015; tahmini satır: 1 → 6.4
- Eski planın index'leri
- dbo.agent_job_runs.IX_agent_job_runs_outcome, dbo.agent_job_runs.CIX_agent_job_runs
- Yeni planın index'leri
- dbo.agent_job_runs.CIX_agent_job_runs
4. Neden adayları
ölçüm ve eşikle; kesin değildir| Kod | Ölçülen | Eşik | Sonuç | Açıklama |
|---|---|---|---|---|
| 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 80.84 → 98.48 (1.22×) | ≥ 2× | desteklemiyor | Çalışma başına satır benzer (80.84 → 98.48): iş yükü farkı yok. |
| PARAM | baskın plan 5 kez el değiştirdi | ≥ 3 | destekliyor | İki plan aynı dönemde sırayla kullanılıyor (5 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 %1055'i: ortalama güvenilir değil.
- HIGH_VARIANCE (zayıf): Yeni planın süre sapması ortalamanın %2099'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 #P448 | DB: DB-9 | Regression | Confidence: Medium (review pending) Query: (@agent_job_uuid uniqueidentifier,@max_rows int)SELECT TOP (@max_rows) r.run_at, r.run_status, r.duration_seconds FROM dbo.agent_job_runs AS r WHERE r.agent_job_uuid = @agent_job_uuid AND r.step_id = ? ORDER BY r.run_at DESC Change: 2026-09-28 10:00 UTC, plan 491 → 518, pattern: Alternating (5 switches) Impact (Query Store, per execution): duration 0.3 → 54.9 ms (+20207%); CPU 0.2 → 0.4 ms (+74%); reads 165 → 24 (-85%); rows 80.84 → 98.48 (+22%) Plan difference: Access only in the old plan: dbo.agent_job_runs Index Seek [IX_agent_job_runs_outcome]; dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs] (lookup); Access only in the new plan: dbo.agent_job_runs Clustered Index Seek [CIX_agent_job_runs]; Join only in the old plan: Nested Loops (Inner Join); Estimated cost: 0.007 → 0.015; estimated rows: 1 → 6.4 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 (5 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 1055% of the average: the average is not reliable. Counter-evidence: HIGH_VARIANCE — The new plan's duration standard deviation is 2099% 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 (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.