Demo modu

Plan değişimi P410

Orta İyileşme 379,9× Bekliyor

DB-11 · query_id 25209 · değişim 30.09.2026 22:00 · plan 25803 → 25811 · Dönüşümlü (13 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
(@keys nvarchar(4000),@from datetime,@to datetime)SELECT q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc, SUM(q.TotalDurationMs) / NULLIF(SUM(q.Executions), 0)
FROM OPENJSON(@keys) WITH (s int '$.s', d sysname '$.d', h varchar(18) '$.h') AS k
JOIN perf.QueryDailyStats AS q ON q.ServerID = k.s AND q.DatabaseName = k.d AND q.query_hash = CONVERT(binary(8), k.h, 1)
WHERE q.StatDateUtc >= @from AND q.StatDateUtc <= @to
GROUP BY q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc

1. Etki özeti

MetrikEski plan (25803)Yeni plan (25811)Değişim
Çalışma530689
İptal / hata0 / 00 / 0
Süre ort. (ms)1.310,63,4-100%
Süre maks. (ms)4.995,713,1-100%
Süre sapma (ms)941,61,0-100%
CPU ort. (ms)1.292,33,4-100%
CPU maks. (ms)3.316,113,1-100%
Mantıksal okuma ort.460,4911,1+98%
Mantıksal okuma maks.910,01.457,0+60%
Fiziksel okuma0,00,1
Yazma0,00,0
Bellek (KB)1.024,01.024,00%
Tempdb (KB)0,00,0
DOP1,01,00%
Satır ort.253,4231,5-9%
Satır maks.432,0432,00%
Dönem30.09.2026 22:00 → 5.10.2026 13:00 30.09.2026 22:00 → 5.10.2026 13:00

Bekleme kategorileri

ms / çalışma
Bekleme kategorisiEski plan (25803)Yeni plan (25811)
CPU19,50,0

2. Zaman çizelgesi

StatsUpdated perf.QueryDailyStats.PK_QueryDailyStats (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 (2026-09-30 22:53)StatsUpdated perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 (2026-09-30 22:53)StatsUpdated perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats.IX_QueryDailyStats_Query (2026-09-30 22:56)StatsUpdated perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 (2026-09-30 22:56)Değişim: 30.09.2026 22:00Eski plan 30.09.2026 22:00: 439,6 msEski plan 1.10.2026 19:00: 479,5 msEski plan 1.10.2026 20:00: 400,4 msEski plan 1.10.2026 21:00: 487,3 msEski plan 2.10.2026 02:00: 2,2 msEski plan 2.10.2026 16:00: 1.180,4 msEski plan 2.10.2026 17:00: 2,0 msEski plan 2.10.2026 18:00: 921,6 msEski plan 2.10.2026 20:00: 876,4 msEski plan 4.10.2026 08:00: 2,0 msEski plan 4.10.2026 10:00: 1,9 msEski plan 4.10.2026 13:00: 2,3 msEski plan 4.10.2026 21:00: 2,1 msEski plan 4.10.2026 22:00: 2,0 msEski plan 5.10.2026 07:00: 2,4 msEski plan 5.10.2026 08:00: 2,4 msEski plan 5.10.2026 09:00: 1.643,9 msEski plan 5.10.2026 10:00: 2.429,9 msEski plan 5.10.2026 11:00: 2.465,0 msEski plan 5.10.2026 12:00: 2.426,3 msYeni plan 30.09.2026 22:00: 4,2 msYeni plan 1.10.2026 19:00: 4,5 msYeni plan 2.10.2026 00:00: 5,2 msYeni plan 2.10.2026 01:00: 2,8 msYeni plan 2.10.2026 17:00: 2,6 msYeni plan 2.10.2026 18:00: 2,4 msYeni plan 4.10.2026 08:00: 3,4 msYeni plan 4.10.2026 09:00: 3,3 msYeni plan 4.10.2026 13:00: 3,3 msYeni plan 4.10.2026 20:00: 3,4 msYeni plan 4.10.2026 22:00: 3,1 msYeni plan 4.10.2026 23:00: 3,1 msYeni plan 5.10.2026 00:00: 0,9 msYeni plan 5.10.2026 01:00: 3,2 msYeni plan 5.10.2026 02:00: 3,1 msYeni plan 5.10.2026 11:00: 4,0 msYeni plan 5.10.2026 12:00: 4,3 msmax 2.465,0 ms 09-30 22:00 10-05 12: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
StatsUpdatedperf.QueryDailyStats.PK_QueryDailyStats30.09.2026 22:56 → 4761/4761 evetevet sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000008_5D80D6A130.09.2026 22:56 → 4761/4761 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000003_5D80D6A130.09.2026 22:56 → 4761/4761 evetevet sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000007_5D80D6A130.09.2026 22:56 → 4761/4761 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000004_5D80D6A130.09.2026 22:56 → 4761/4761 evetevet sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000015_5D80D6A130.09.2026 22:56 → 4715/4715 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000016_5D80D6A130.09.2026 22:53 → 4761/4761 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000018_5D80D6A130.09.2026 22:53 → 4761/4761 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_0000001B_5D80D6A130.09.2026 22:56 → 4715/4715 hayırhayır sıra belirsiz
StatsUpdatedperf.QueryDailyStats.IX_QueryDailyStats_Query30.09.2026 22:56 → 4761/4761 evetevet sıra belirsiz
StatsUpdatedperf.QueryDailyStats._WA_Sys_00000006_5D80D6A130.09.2026 22:56 → 4712/4712 hayırhayır sıra belirsiz

3. Plan karşılaştırması

  • Yalnız eski planda erişim: perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]
  • Yalnız yeni planda erişim: perf.QueryDailyStats Index Seek [IX_QueryDailyStats_Query]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats] (lookup)
  • Yalnız eski planda join: Nested Loops (Inner Join)
  • Yalnız yeni planda join: Nested Loops (Inner Join) ×2
  • Tahmini maliyet: 0.023 → 0.188; tahmini satır: 1 → 18.3
Eski planın index'leri
perf.QueryDailyStats.PK_QueryDailyStats
Yeni planın index'leri
perf.QueryDailyStats.IX_QueryDailyStats_Query, perf.QueryDailyStats.PK_QueryDailyStats

4. Neden adayları

ölçüm ve eşikle; kesin değildir
KodÖlçülenEşikSonuçAçıklama
STATS perf.QueryDailyStats.PK_QueryDailyStats güncellendi 2026-09-30 22:56 (örnekleme %100)değişimden önceki 48 saat desteklemiyor İstatistik perf.QueryDailyStats.PK_QueryDailyStats 2026-09-30 22:56 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor.
STATS perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 güncellendi 2026-09-30 22:56 (örnekleme %100)değişimden önceki 48 saat desteklemiyor İstatistik perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 2026-09-30 22:56 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor.
STATS perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 güncellendi 2026-09-30 22:56 (örnekleme %100)değişimden önceki 48 saat desteklemiyor İstatistik perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 2026-09-30 22:56 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor.
STATS perf.QueryDailyStats.IX_QueryDailyStats_Query güncellendi 2026-09-30 22:56 (örnekleme %100)değişimden önceki 48 saat desteklemiyor İstatistik perf.QueryDailyStats.IX_QueryDailyStats_Query 2026-09-30 22:56 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor.
STATS 7 istatistik güncellendi, planlar kullanmıyor desteklemiyor Pencerede güncellenen ama iki planın da kullanmadığı istatistikler aday değil: perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1, perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 (+2).
WORKLOAD çalışma başına satır 253.37 → 231.48 (1.09×)≥ 2× desteklemiyor Çalışma başına satır benzer (253.37 → 231.48): iş yükü farkı yok.
PARAM baskın plan 13 kez el değiştirdi≥ 3 destekliyor İki plan aynı dönemde sırayla kullanılıyor (13 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 #P410 | DB: DB-11 | Improvement | Confidence: Medium (review pending)
Query: (@keys nvarchar(?),@from datetime,@to datetime)SELECT q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc, SUM(q.TotalDurationMs) / NULLIF(SUM(q.Executions), ?) FROM OPENJSON(@keys) WITH (s int ?, d sysname ?, h varchar(?) ?) AS k JOIN perf.QueryDailyStats AS q ON q.ServerID = k.s AND q.DatabaseName = k.d AND q.query_hash = CONVERT(binary(?), k.h, ?) WHERE q.StatDateUtc >= @from AND q.StatDateUtc <= @to GROUP BY q.ServerID, q.DatabaseName, q.query_hash, q.StatDateUtc
Change: 2026-09-30 22:00 UTC, plan 25803 → 25811, pattern: Alternating (13 switches)
Impact (Query Store, per execution): duration 1310.6 → 3.4 ms (-100%); CPU 1292.3 → 3.4 ms (-100%); reads 460 → 911 (+98%); rows 253.37 → 231.48 (-9%)
Plan difference: Access only in the old plan: perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]; Access only in the new plan: perf.QueryDailyStats Index Seek [IX_QueryDailyStats_Query]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats] (lookup); Join only in the old plan: Nested Loops (Inner Join); Join only in the new plan: Nested Loops (Inner Join) ×2
Candidate cause: PARAM — The two plans alternate in the same period (13 switches): plan choice depends on the parameter value rather than an event (parameter sensitivity).
Counter-evidence: ORDER_UNCERTAIN — STATS candidate ruled out: the time of the perf.QueryDailyStats.PK_QueryDailyStats event (2026-09-30 22:56) spans the change, so whether it happened before or after is unknown.
Counter-evidence: ORDER_UNCERTAIN — STATS candidate ruled out: the time of the perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 event (2026-09-30 22:56) spans the change, so whether it happened before or after is unknown.
Counter-evidence: ORDER_UNCERTAIN — STATS candidate ruled out: the time of the perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 event (2026-09-30 22:56) spans the change, so whether it happened before or after is unknown.
Counter-evidence: ORDER_UNCERTAIN — STATS candidate ruled out: the time of the perf.QueryDailyStats.IX_QueryDailyStats_Query event (2026-09-30 22:56) spans the change, so whether it happened before or after is unknown.
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.