Demo modu

Plan değişimi P450

Orta İyileşme 1,3× Bekliyor

DB-10 · query_id 2072 · değişim 28.09.2026 10:00 · plan 582 → 627 · Geçiş · Sorgu detayı ve analizleri

Güven gerekçesiOrta: tek mekanik aday (FORCED) ama zayıf karşı kanıt (HIGH_VARIANCE, METADATA_GAP).

Sorgu metni

SQL
(@from_utc datetime2(7),@to_utc datetime2(7),@epoch datetime2(7),@bucket int)INSERT INTO dbo.instance_counters_1m
    (bucket, instance_id, metric, scope, avg_value, max_value, min_value, last_value, samples)
SELECT k.bucket,
       k.instance_id,
       k.metric,
       k.scope,
       AVG(k.value),
       MAX(k.value),
       MIN(k.value),
       -- SON DEGER PENCERENIN SONUNDAN OKUNUR, MAX'TAN DEGIL:
       -- kumulatif bir sayacta ikisi ayni cikar, dalgalanan bir
       -- sayacta ayrilir ve "son" sozcugu MAX'a kaydirilirsa
       -- kolon adiyla icerigi celisir.
       --
       -- SIRA NUMARASI TEK GECISTE HESAPLANIR. Onceki bicim
       -- kovanin son anini `CROSS APPLY` ile HER SATIR ICIN
       -- yeniden ariyordu; olculdu (2026-09-01): iki bin
       -- dakikalik bir yakalama turu 20 saniyeden 900 saniyeye
       -- kadar cikti ve motor kendi ilk dolumunu bitiremedi.
       -- Pencere islevi ayni cevabi tek taramada verir --
       -- p95'te de ayni cozum kullanildi.
       MAX(CASE WHEN k.rn = 1 THEN k.value END),
       COUNT_BIG(*)
FROM (
    SELECT DATEADD(SECOND, (DATEDIFF_BIG(SECOND, @epoch, c.ts) / @bucket) * @bucket, @epoch) AS bucket,
           c.instance_id,
           c.metric,
           c.scope,
           c.value,
           ROW_NUMBER() OVER (
               PARTITION BY
                   DATEADD(SECOND, (DATEDIFF_BIG(SECOND, @epoch, c.ts) / @bucket) * @bucket, @epoch),
                   c.instance_id, c.metric, c.scope
               ORDER BY c.ts DESC) AS rn
    FROM dbo.instance_counters AS c
    WHERE c.ts >= @from_utc AND c.ts < @to_utc
) AS k
GROUP BY k.bucket, k.instance_id, k.metric, k.scope

1. Etki özeti

MetrikEski plan (582)Yeni plan (627)Değişim
Çalışma135319
İptal / hata0 / 00 / 0
Süre ort. (ms)1.935,01.480,1-24%
Süre maks. (ms)164.482,1446.995,2+172%
Süre sapma (ms)15.359,924.983,3+63%
CPU ort. (ms)183,174,4-59%
CPU maks. (ms)861,5384,5-55%
Mantıksal okuma ort.12.107,16.397,5-47%
Mantıksal okuma maks.20.606,037.873,0+84%
Fiziksel okuma70,17,9-89%
Yazma17,416,1-8%
Bellek (KB)382.205,658.363,5-85%
Tempdb (KB)0,00,0
DOP1,01,00%
Satır ort.995,4996,50%
Satır maks.1.622,02.842,0+75%
Dönem27.09.2026 22:00 → 29.09.2026 19:00 28.09.2026 10:00 → 29.09.2026 14:00

Bekleme kategorileri

ms / çalışma
Bekleme kategorisiEski plan (582)Yeni plan (627)
Memory1.742,41.402,7
CPU11,14,8
Buffer IO1,40,1
Tran Log IO0,40,1
Latch–0,0

2. Zaman çizelgesi

TableGrowth dbo.instance_counters (2026-09-27 00:00 – 2026-09-28 00:00)TableGrowth dbo.instance_counters_1m (2026-09-27 00:00 – 2026-09-28 00:00)Değişim: 28.09.2026 10:00Eski plan 27.09.2026 22:00: 267,0 msEski plan 27.09.2026 23:00: 271,7 msEski plan 28.09.2026 00:00: 301,8 msEski plan 28.09.2026 01:00: 292,7 msEski plan 28.09.2026 02:00: 298,1 msEski plan 28.09.2026 08:00: 275,9 msEski plan 28.09.2026 09:00: 6.330,5 msEski plan 28.09.2026 10:00: 176,8 msEski plan 28.09.2026 16:00: 54,2 msEski plan 28.09.2026 21:00: 73,6 msEski plan 29.09.2026 13:00: 59,5 msEski plan 29.09.2026 14:00: 60,9 msEski plan 29.09.2026 15:00: 69,7 msEski plan 29.09.2026 16:00: 13.767,8 msEski plan 29.09.2026 17:00: 82,3 msEski plan 29.09.2026 18:00: 66,6 msYeni plan 28.09.2026 10:00: 39,4 msYeni plan 28.09.2026 11:00: 46,0 msYeni plan 28.09.2026 12:00: 46,8 msYeni plan 28.09.2026 13:00: 50,1 msYeni plan 28.09.2026 14:00: 51,7 msYeni plan 28.09.2026 15:00: 59,0 msYeni plan 28.09.2026 16:00: 88,4 msYeni plan 28.09.2026 17:00: 65,7 msYeni plan 28.09.2026 18:00: 67,3 msYeni plan 28.09.2026 19:00: 80,9 msYeni plan 28.09.2026 20:00: 76,9 msYeni plan 28.09.2026 21:00: 113,4 msYeni plan 28.09.2026 22:00: 76,7 msYeni plan 28.09.2026 23:00: 94,7 msYeni plan 29.09.2026 00:00: 137,1 msYeni plan 29.09.2026 01:00: 40.719,7 msYeni plan 29.09.2026 02:00: 96,8 msYeni plan 29.09.2026 03:00: 91,5 msYeni plan 29.09.2026 04:00: 84,3 msYeni plan 29.09.2026 05:00: 86,4 msYeni plan 29.09.2026 06:00: 89,0 msYeni plan 29.09.2026 07:00: 92,3 msYeni plan 29.09.2026 08:00: 104,5 msYeni plan 29.09.2026 09:00: 105,3 msYeni plan 29.09.2026 10:00: 100,4 msYeni plan 29.09.2026 11:00: 55,0 msYeni plan 29.09.2026 12:00: 52,4 msYeni plan 29.09.2026 13:00: 54,7 msmax 40.719,7 ms 09-27 00:00 09-29 18:00
Eski planYeni plan ┆ değişim anı (kesik çizgi)░ olay (bant: zamanı aralık olarak bilinen)

Olaylar

OlayNesneZamanÖnce → sonra Eski plan kullanıyorYeni plan kullanıyor
PlanUnforcedbilinmiyor bilinmiyorbilinmiyor
TableGrowthdbo.instance_counters27.09.2026 00:00 – 28.09.2026 00:00 4704073|225.16 → 4958115|112.86 bilinmiyorbilinmiyor
TableGrowthdbo.instance_counters_1m27.09.2026 00:00 – 28.09.2026 00:00 3822948|287.15 → 4066948|124.03 bilinmiyorbilinmiyor

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
dbo.instance_counters_1m.cci_instance_counters_1m, dbo.instance_counters.cci_instance_counters
Yeni planın index'leri
dbo.instance_counters_1m.cci_instance_counters_1m, dbo.instance_counters.cci_instance_counters

4. Neden adayları

ölçüm ve eşikle; kesin değildir
KodÖlçülenEşikSonuçAçıklama
FORCEDmekanik eski planın zorlaması kalkmış destekliyor Eski plan zorlanmıştı, yeni plan zorlanmamış: zorlama kaldırılmış ya da başarısız.
GROWTH dbo.instance_counters: satır 4,704,073 → 4,958,115 (%+5), boyut 225.16 → 112.86 MB (%-50)≥ %20 desteklemiyor dbo.instance_counters eski planın döneminden değişime kadar satır %+5, boyut %-50 değişti (2026-09-27 → 2026-09-28).
GROWTH dbo.instance_counters_1m: satır 3,822,948 → 4,066,948 (%+6), boyut 287.15 → 124.03 MB (%-57)≥ %20 desteklemiyor dbo.instance_counters_1m eski planın döneminden değişime kadar satır %+6, boyut %-57 değişti (2026-09-27 → 2026-09-28).
WORKLOAD çalışma başına satır 995.36 → 996.53 (1×)≥ 2× desteklemiyor Çalışma başına satır benzer (995.36 → 996.53): iş yükü farkı yok.
PARAM baskın plan 2 kez el değiştirdi≥ 3 desteklemiyor Planlar dönüşümlü değil: yeni plan eskisinin yerini aldı.

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 #P450 | DB: DB-10 | Improvement | Confidence: Medium (review pending)
Query: (@from_utc datetime2(?),@to_utc datetime2(?),@epoch datetime2(?),@bucket int)INSERT INTO dbo.instance_counters_1m (bucket, instance_id, metric, scope, avg_value, max_value, min_value, last_value, samples) SELECT k.bucket, k.instance_id, k.metric, k.scope, AVG(k.value), MAX(k.value), MIN(k.value), MAX(CASE WHEN k.rn = ? THEN k.value END), COUNT_BIG(*) FROM ( SELECT DATEADD(SECOND, (DATEDIFF_BIG(SECOND, @epoch, c.ts) / @bucket) * @bucket, @epoch) AS bucket, c.instance_id, c.metric, c.scope, c.value, ROW_NUMBER() OVER ( PARTITION BY DATEADD(SECOND, (DATEDIFF_BIG(SECOND, @epoch, c.ts) / @bucket) * @bucket, @epoch), c.instance_id, c.metric, c.scope ORDER BY c.ts DESC) AS rn FROM dbo.instance_counters AS c WHERE c.ts >= @from_utc AND c.ts < @to_utc ) AS k GROUP BY k.bucket, k.instance_id, k.metric, k.scope
Change: 2026-09-28 10:00 UTC, plan 582 → 627, pattern: Transition
Impact (Query Store, per execution): duration 1935 → 1480.1 ms (-24%); CPU 183.1 → 74.4 ms (-59%); reads 12,107 → 6,397 (-47%); rows 995.36 → 996.53 (+0%)
Plan difference: no operator-level difference
Candidate cause: FORCED — The old plan was forced and the new plan is not: forcing was removed or failed.
Counter-evidence: HIGH_VARIANCE — The old plan's duration standard deviation is 794% of the average: the average is not reliable.
Counter-evidence: HIGH_VARIANCE — The new plan's duration standard deviation is 1688% 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: a single mechanical candidate (FORCED) but 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.