Demo modu

Plan değişimi P455

Orta İyileşme 50,7× Bekliyor

DB-12 · query_id 2186 · rag.usp_EmbedQueue_Dequeue · değişim 30.09.2026 03:00 · plan 2221 → 7360 · Dönüşümlü (5 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

SQL
(@MaxAttempts int)UPDATE rag.EmbedQueue SET Status = 'Failed', Error = COALESCE(Error, N'Deneme hakkı bitti (lease süresi doldu)'),
                              FinishedAtUtc = SYSUTCDATETIME(), LeaseUntilUtc = NULL
    WHERE Status = 'Running' AND LeaseUntilUtc < SYSUTCDATETIME() AND Attempt >= @MaxAttempts

1. Etki özeti

MetrikEski plan (2221)Yeni plan (7360)Değişim
Çalışma4753.179
İptal / hata0 / 00 / 0
Süre ort. (ms)6,90,1-98%
Süre maks. (ms)13,51,7-87%
Süre sapma (ms)1,90,1-97%
CPU ort. (ms)6,90,1-98%
CPU maks. (ms)13,51,7-87%
Mantıksal okuma ort.334,92,1-99%
Mantıksal okuma maks.415,04,0-99%
Fiziksel okuma0,00,0
Yazma0,00,0
Bellek (KB)1.024,01.024,00%
Tempdb (KB)0,00,0
DOP1,01,00%
Satır ort.0,00,0
Satır maks.0,00,0
Dönem29.09.2026 02:00 → 30.09.2026 16:00 30.09.2026 03:00 → 2.10.2026 03:00

Bekleme kategorileri

ms / çalışma
Bekleme kategorisiEski plan (2221)Yeni plan (7360)
CPU0,0–

2. Zaman çizelgesi

Değişim: 30.09.2026 03:00Eski plan 29.09.2026 02:00: 1,4 msEski plan 29.09.2026 03:00: 2,0 msEski plan 29.09.2026 19:00: 3,5 msEski plan 30.09.2026 09:00: 5,5 msEski plan 30.09.2026 11:00: 6,9 msEski plan 30.09.2026 13:00: 7,6 msEski plan 30.09.2026 15:00: 8,3 msYeni plan 30.09.2026 03:00: 0,1 msYeni plan 30.09.2026 04:00: 0,1 msYeni plan 30.09.2026 05:00: 0,1 msYeni plan 30.09.2026 06:00: 0,1 msYeni plan 30.09.2026 07:00: 0,1 msYeni plan 30.09.2026 08:00: 0,1 msYeni plan 30.09.2026 09:00: 0,2 msYeni plan 30.09.2026 14:00: 0,1 msYeni plan 30.09.2026 15:00: 0,1 msYeni plan 30.09.2026 17:00: 0,1 msYeni plan 30.09.2026 18:00: 0,1 msYeni plan 30.09.2026 20:00: 0,2 msYeni plan 30.09.2026 22:00: 0,1 msYeni plan 1.10.2026 21:00: 0,2 msYeni plan 2.10.2026 02:00: 0,1 msmax 8,3 ms 09-29 02:00 10-02 02:00
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: rag.EmbedQueue Clustered Index Scan [PK_EmbedQueue]
  • Yalnız yeni planda erişim: rag.EmbedQueue Index Seek [IX_EmbedQueue_Status]; rag.EmbedQueue Clustered Index Seek [PK_EmbedQueue] (lookup)
  • Yalnız yeni planda join: Nested Loops (Inner Join)
  • Tahmini maliyet: 0.045 → 0.145; tahmini satır: 1 → 1
Eski planın index'leri
rag.EmbedQueue.UX_EmbedQueue_Pending, rag.EmbedQueue.PK_EmbedQueue
Yeni planın index'leri
rag.EmbedQueue.UX_EmbedQueue_Pending, rag.EmbedQueue.PK_EmbedQueue, rag.EmbedQueue.IX_EmbedQueue_Status

4. Neden adayları

ölçüm ve eşikle; kesin değildir
KodÖlçülenEşikSonuçAçıklama
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 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

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 #P455 | DB: DB-12 | Improvement | Confidence: Medium (review pending)
Query: (@MaxAttempts int)UPDATE rag.EmbedQueue SET Status = ?, Error = COALESCE(Error, ?), FinishedAtUtc = SYSUTCDATETIME(), LeaseUntilUtc = NULL WHERE Status = ? AND LeaseUntilUtc < SYSUTCDATETIME() AND Attempt >= @MaxAttempts
Change: 2026-09-30 03:00 UTC, plan 2221 → 7360, pattern: Alternating (5 switches)
Impact (Query Store, per execution): duration 6.9 → 0.1 ms (-98%); CPU 6.9 → 0.1 ms (-98%); reads 335 → 2 (-99%); rows 0 → 0
Plan difference: Access only in the old plan: rag.EmbedQueue Clustered Index Scan [PK_EmbedQueue]; Access only in the new plan: rag.EmbedQueue Index Seek [IX_EmbedQueue_Status]; rag.EmbedQueue Clustered Index Seek [PK_EmbedQueue] (lookup); Join only in the new plan: Nested Loops (Inner Join); Estimated cost: 0.045 → 0.145; estimated rows: 1 → 1
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: METADATA_GAP — Metadata collection started on 2026-10-01 and the change was on 2026-09-30: 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.