Plan değişimi P458
Düşük İyileşme 21,3× BekliyorDB-12 · query_id 18535 · DBA.usp_Apply_Qds · değişim 5.10.2026 11:00 · plan 8465 → 8476 · Dönüşümlü (10 el değiştirme) · Sorgu detayı ve analizleri
Güven gerekçesiDüşük: güçlü karşı kanıt (WORK_PROPORTIONAL, SAME_SHAPE).
Sorgu metni
(@now datetime)WITH p AS (SELECT PlanHash, PlanXml, ROW_NUMBER() OVER (PARTITION BY PlanHash ORDER BY plan_id) AS rn FROM #px)
INSERT perf.QdsPlanXml (PlanHash, PlanXmlCompressed, FirstSeenUtc, LastSeenUtc)
SELECT PlanHash, COMPRESS(PlanXml), @now, @now FROM p
WHERE rn = 1 AND NOT EXISTS (SELECT 1 FROM perf.QdsPlanXml AS e WHERE e.PlanHash = p.PlanHash)1. Etki özeti
| Metrik | Eski plan (8465) | Yeni plan (8476) | Değişim |
|---|---|---|---|
| Çalışma | 270 | 213 | |
| İptal / hata | 0 / 0 | 0 / 0 | |
| Süre ort. (ms) | 106,0 | 5,0 | -95% |
| Süre maks. (ms) | 2.119,9 | 131,5 | -94% |
| Süre sapma (ms) | 369,6 | 15,0 | -96% |
| CPU ort. (ms) | 78,1 | 3,3 | -96% |
| CPU maks. (ms) | 1.525,5 | 114,1 | -93% |
| Mantıksal okuma ort. | 2.920,2 | 102,5 | -96% |
| Mantıksal okuma maks. | 60.557,0 | 3.754,0 | -94% |
| Fiziksel okuma | 192,2 | 3,3 | -98% |
| Yazma | 215,2 | 5,9 | -97% |
| Bellek (KB) | 1.641,7 | 1.024,0 | -38% |
| Tempdb (KB) | 398,5 | 15,6 | -96% |
| DOP | 1,0 | 1,0 | 0% |
| Satır ort. | 96,9 | 1,8 | -98% |
| Satır maks. | 1.998,0 | 67,0 | -97% |
| Dönem | 5.10.2026 11:00 → 8.10.2026 21:00 | 5.10.2026 11:00 → 8.10.2026 22:00 |
Bekleme kategorileri
ms / çalışma| Bekleme kategorisi | Eski plan (8465) | Yeni plan (8476) |
|---|---|---|
| Buffer IO | 11,5 | 0,3 |
| Memory | 0,6 | – |
| Preemptive | 0,3 | – |
| SQL CLR | 0,0 | – |
| CPU | 0,0 | – |
| Latch | 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 | |
|---|---|---|---|---|---|---|
| StatsUpdated | perf.QdsPlanXml.PK_QdsPlanXml | 4.10.2026 09:10 | → 5181/17717 | evet | bilinmiyor | |
| StatsUpdated | perf.QdsPlanXml.PK_QdsPlanXml | 5.10.2026 01:11 | → 5594/22089 | evet | bilinmiyor |
3. Plan karşılaştırması
- Operatör düzeyinde fark yok: süre farkı büyük olasılıkla beklemeden ya da parametre değerinden.
- Eski planın index'leri
- perf.QdsPlanXml.PK_QdsPlanXml
- Yeni planın index'leri
- perf.QdsPlanXml.PK_QdsPlanXml
4. Neden adayları
ölçüm ve eşikle; kesin değildir| Kod | Ölçülen | Eşik | Sonuç | Açıklama |
|---|---|---|---|---|
| STATS | perf.QdsPlanXml.PK_QdsPlanXml güncellendi 2026-10-05 01:11 (örnekleme %25.3); pencerede 2 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsPlanXml.PK_QdsPlanXml 2026-10-05 01:11 güncellendi (örnekleme %25.3); pencerede 2 güncelleme; planlar bu istatistiği kullanıyor. |
| WORKLOAD | çalışma başına satır 96.89 → 1.8 (53.88×) | ≥ 2× | destekliyor | Planlar farklı iş yükü görüyor: çalışma başına satır 96.89 → 1.8. Planlar farklı parametre/parti büyüklüğü için derlenmiş olabilir. |
| PARAM | baskın plan 10 kez el değiştirdi | ≥ 3 | destekliyor | İki plan aynı dönemde sırayla kullanılıyor (10 el değiştirme): plan seçimi bir olaydan çok parametre değerine bağlı (parametre duyarlılığı). |
5. Karşı kanıtlar
- WORK_PROPORTIONAL (güçlü): Çalışma başına satır 0.02×, süre 0.05× değişti; satır başına süre 1.0943 → 2.7669 ms: süre farkı işlenen veri miktarından, plandan değil.
- HIGH_VARIANCE (zayıf): Eski planın süre sapması ortalamanın %349'i: ortalama güvenilir değil.
- HIGH_VARIANCE (zayıf): Yeni planın süre sapması ortalamanın %301'i: ortalama güvenilir değil.
- SAME_SHAPE (güçlü): İki planın operatör ağacı aynı (operatörler, tablolar, index'ler): plan değişmemiş; fark yalnız derlenen parametre değerleri ve satır tahminlerinde. Yavaşlık plan seçiminden değil, bu parametre değerinin işlediği veri miktarından ya da beklemeden kaynaklanıyor olabilir.
6. Korpus metni önizlemesi
onaylanınca RAG hafızasına bu metin girer (başlığa onaylayan eklenir)Plan change case #P458 | DB: DB-12 | Improvement | Confidence: Low (review pending) Query: (@now datetime)WITH p AS (SELECT PlanHash, PlanXml, ROW_NUMBER() OVER (PARTITION BY PlanHash ORDER BY plan_id) AS rn FROM #px) INSERT perf.QdsPlanXml (PlanHash, PlanXmlCompressed, FirstSeenUtc, LastSeenUtc) SELECT PlanHash, COMPRESS(PlanXml), @now, @now FROM p WHERE rn = ? AND NOT EXISTS (SELECT ? FROM perf.QdsPlanXml AS e WHERE e.PlanHash = p.PlanHash) Change: 2026-10-05 11:00 UTC, plan 8465 → 8476, pattern: Alternating (10 switches) Impact (Query Store, per execution): duration 106 → 5 ms (-95%); CPU 78.1 → 3.3 ms (-96%); reads 2,920 → 103 (-96%); rows 96.89 → 1.8 (-98%) Plan difference: no operator-level difference Candidate cause: STATS — Statistic perf.QdsPlanXml.PK_QdsPlanXml was updated 2026-10-05 01:11 (sampled 25.3%); 2 updates in the window; the plans use this statistic. Candidate cause: WORKLOAD — The plans see a different workload: rows per execution 96.89 → 1.8. The plans may have been compiled for different parameters or batch sizes. Candidate cause: PARAM — The two plans alternate in the same period (10 switches): plan choice depends on the parameter value rather than an event (parameter sensitivity). Counter-evidence: WORK_PROPORTIONAL — Rows per execution changed 0.02× and duration 0.05×; duration per row 1.0943 → 2.7669 ms: the duration difference comes from the amount of data processed, not the plan. Counter-evidence: HIGH_VARIANCE — The old plan's duration standard deviation is 349% of the average: the average is not reliable. Counter-evidence: HIGH_VARIANCE — The new plan's duration standard deviation is 301% of the average: the average is not reliable. Counter-evidence: SAME_SHAPE — The two plans have the same operator tree (operators, tables, indexes): the plan did not change; the difference is only in the compiled parameter values and row estimates. The slowness may come from the amount of data this parameter value processes or from waits, not from plan choice. Confidence rationale: Low: strong counter-evidence (WORK_PROPORTIONAL, SAME_SHAPE). 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.