Plan değişimi P403
Orta Kötüleşme 17,4× BekliyorDB-11 · query_id 112 · tSQLt.Private_CreateFakeOfTable · değişim 27.09.2026 23:00 · plan 121 → 1185 · Dönüşümlü (6 el değiştirme) · Sorgu detayı ve analizleri
Güven gerekçesiOrta: tek aday (PARAM), mekanik değil (plan ile doğrudan bağ kanıtlanmıyor). Zayıf karşı kanıt: METADATA_GAP.
Sorgu metni
(@OrigTableObjectId int,@SchemaName nvarchar(max),@TableName nvarchar(max),@Identity bit,@ComputedColumns bit,@Defaults bit,@cmd nvarchar(max))DECLARE @cmd NVARCHAR(MAX) =
(SELECT CreateTableStatement
FROM tSQLt.Private_CreateFakeTableStatement(@OrigTableObjectId, @SchemaName+'.'+@TableName,@Identity,@ComputedColumns,@Defaults,0))1. Etki özeti
| Metrik | Eski plan (121) | Yeni plan (1185) | Değişim |
|---|---|---|---|
| Çalışma | 4.242 | 17.885 | |
| İptal / hata | 0 / 0 | 0 / 0 | |
| Süre ort. (ms) | 0,7 | 12,2 | +1640% |
| Süre maks. (ms) | 12,2 | 173,6 | +1318% |
| Süre sapma (ms) | 0,7 | 11,6 | +1645% |
| CPU ort. (ms) | 0,7 | 12,2 | +1640% |
| CPU maks. (ms) | 12,2 | 173,6 | +1318% |
| Mantıksal okuma ort. | 144,0 | 726,9 | +405% |
| Mantıksal okuma maks. | 1.488,0 | 3.753,0 | +152% |
| Fiziksel okuma | 0,0 | 0,0 | |
| 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. | 1,0 | 1,0 | 0% |
| Satır maks. | 1,0 | 1,0 | 0% |
| Dönem | 27.09.2026 23:00 → 8.10.2026 20:00 | 27.09.2026 23:00 → 8.10.2026 20:00 |
Bekleme kategorileri
ms / çalışma| Bekleme kategorisi | Eski plan (121) | Yeni plan (1185) |
|---|---|---|
| Memory | 0,0 | 0,0 |
| CPU | – | 0,0 |
| Buffer Latch | – | 0,0 |
2. Zaman çizelgesi
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: sys.sysschobjs Index Seek [nc3]; sys.sysschobjs Clustered Index Seek [clst] (lookup)
- Yalnız yeni planda erişim: sys.sysschobjs Clustered Index Scan [clst]
- Yalnız eski planda join: Nested Loops (Inner Join) ×6
- Yalnız yeni planda join: Nested Loops (Inner Join) ×5
- Tahmini maliyet: 1.567 → 1.471; tahmini satır: 1 → 1
- Eski planın index'leri
- sys.syscolpars.clst, sys.sysobjvalues.clst, sys.sysscalartypes.clst, sys.sysschobjs.nc3, sys.sysschobjs.clst
- Yeni planın index'leri
- sys.syscolpars.clst, sys.sysobjvalues.clst, sys.sysscalartypes.clst, sys.sysschobjs.clst
4. Neden adayları
ölçüm ve eşikle; kesin değildir| Kod | Ölçülen | Eşik | Sonuç | Açıklama |
|---|---|---|---|---|
| WORKLOAD | çalışma başına satır 1 → 1 (1×) | ≥ 2× | desteklemiyor | Çalışma başına satır benzer (1 → 1): 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
- METADATA_GAP (zayıf): Metadata toplama 2026-10-01 tarihinde başladı, değişim 2026-09-27: 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 #P403 | DB: DB-11 | Regression | Confidence: Medium (review pending) Query: (@OrigTableObjectId int,@SchemaName nvarchar(max),@TableName nvarchar(max),@Identity bit,@ComputedColumns bit,@Defaults bit,@cmd nvarchar(max))DECLARE @cmd NVARCHAR(MAX) = (SELECT CreateTableStatement FROM tSQLt.Private_CreateFakeTableStatement(@OrigTableObjectId, @SchemaName+?+@TableName,@Identity,@ComputedColumns,@Defaults,?)) Change: 2026-09-27 23:00 UTC, plan 121 → 1185, pattern: Alternating (6 switches) Impact (Query Store, per execution): duration 0.7 → 12.2 ms (+1640%); CPU 0.7 → 12.2 ms (+1640%); reads 144 → 727 (+405%); rows 1 → 1 (+0%) Plan difference: Access only in the old plan: sys.sysschobjs Index Seek [nc3]; sys.sysschobjs Clustered Index Seek [clst] (lookup); Access only in the new plan: sys.sysschobjs Clustered Index Scan [clst]; Join only in the old plan: Nested Loops (Inner Join) ×6; Join only in the new plan: Nested Loops (Inner Join) ×5 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: METADATA_GAP — Metadata collection started on 2026-10-01 and the change was on 2026-09-27: index, statistics and module events could not be evaluated (no data, not no events). Confidence rationale: Medium: a single candidate (PARAM), not mechanical (no direct link to the plan is proven). Weak counter-evidence: 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.