Plan değişimi P425
Orta Kötüleşme 159,9× BekliyorDB-11 · query_id 51420 · değişim 5.10.2026 22:00 · plan 54132 → 62548 · Dönüşümlü (7 el değiştirme) · Sorgu detayı ve analizleri
Güven gerekçesiOrta: birden fazla aday (STATS, PARAM) — rakip açıklamalar. Zayıf karşı kanıt: HIGH_VARIANCE.
Bu sorgunun diğer plan değişimleri
Önceki kararlar; ters yöndeki değişim aynı planlar arasında geri dönüştür.| # | Planlar | Yön | Durum | Karar | Tespit |
|---|---|---|---|---|---|
| P426 | 62548 → 64806 | İyileşme 2171,8× | Bekliyor | – | 9.10.2026 14:51 |
Sorgu metni
(@from datetime,@to datetime,@srv int,@dbName nvarchar(4000),@minExec bigint,@len int,@regMin bigint,@regression bit,@regRatio float,@candidates bit,@qHash varbinary(8000),@qId bigint,@qText nvarchar(4000))WITH cur AS (
SELECT ServerID, DatabaseName, query_hash,
ISNULL(SUM(Executions), 0) AS Executions, ISNULL(SUM(TotalCpuMs), 0) AS TotalCpuMs, ISNULL(SUM(TotalDurationMs), 0) AS TotalDurationMs,
MAX(P95DurationMs) AS P95DurationMs, ISNULL(SUM(TotalLogicalReads), 0) AS TotalLogicalReads,
ISNULL(SUM(CAST(BlockedOthersCount AS bigint)), 0) AS BlockedOthersCount, ISNULL(MAX(PlanCount), 0) AS PlanCount,
COUNT(*) AS DayCount, MAX(ObjectName) AS ObjectName
FROM perf.QueryDailyStats
WHERE StatDateUtc BETWEEN @from AND @to
AND (@srv IS NULL OR ServerID = @srv) AND (@dbName IS NULL OR DatabaseName = @dbName)
GROUP BY ServerID, DatabaseName, query_hash
HAVING ISNULL(SUM(Executions), 0) >= @minExec
),
prev AS ( -- önceki eşit uzunluktaki dönem (kötüleşme)
SELECT ServerID, DatabaseName, query_hash, SUM(Executions) AS Executions, SUM(TotalDurationMs) AS TotalDurationMs
FROM perf.QueryDailyStats
WHERE StatDateUtc BETWEEN DATEADD(day, -@len, @from) AND DATEADD(day, -1, @from)
AND (@srv IS NULL OR ServerID = @srv) AND (@dbName IS NULL OR DatabaseName = @dbName)
GROUP BY ServerID, DatabaseName, query_hash
),
ranked AS (
SELECT c.*,
CASE WHEN c.Executions >= @regMin AND p.Executions >= @regMin AND p.TotalDurationMs > 0
THEN (c.TotalDurationMs / c.Executions) / (p.TotalDurationMs / p.Executions) END AS RegressionRatio
FROM cur AS c
LEFT JOIN prev AS p ON p.ServerID = c.ServerID AND p.DatabaseName = c.DatabaseName AND p.query_hash = c.query_hash
)
SELECT c.*, ISNULL(t.State, 'New') AS State, qc.Reasons AS CandidateReasons
INTO #r
FROM ranked AS c
LEFT JOIN #t AS t ON t.ServerID = c.ServerID AND t.DatabaseName = c.DatabaseName AND t.QueryHash = c.query_hash
LEFT JOIN rag.QueryCandidate AS qc ON qc.ServerID = c.ServerID AND qc.DatabaseName = c.DatabaseName AND qc.QueryHash = c.query_hash
WHERE (@regression = 0 OR c.RegressionRatio >= @regRatio)
AND (@candidates = 0 OR qc.Reasons IS NOT NULL)
AND (@qHash IS NULL OR c.query_hash = @qHash)
AND (@qId IS NULL OR EXISTS (SELECT 1 FROM perf.QdsQuery AS q
WHERE q.ServerID = c.ServerID AND q.DatabaseName = c.DatabaseName AND q.query_hash = c.query_hash AND q.query_id = @qId))
-- Metin: nesne adı ya da dönemdeki örnek metinlerden biri (yalnız süzülmüş dönem satırlarında; ham metin taranmaz)
AND (@qText IS NULL OR c.ObjectName LIKE @qText
OR EXISTS (SELECT 1 FROM perf.QueryDailyStats AS d
LEFT JOIN perf.QdsQueryText AS qt ON qt.TextHash = d.SampleTextHash
LEFT JOIN perf.SqlText AS st ON st.TextHash = d.SampleTextHash
WHERE d.ServerID = c.ServerID AND d.DatabaseName = c.DatabaseName AND d.query_hash = c.query_hash
AND d.StatDateUtc BETWEEN @from AND @to AND d.SampleTextHash IS NOT NULL
AND (qt.query_sql_text LIKE @qText OR st.SqlText LIKE @qText)))1. Etki özeti
| Metrik | Eski plan (54132) | Yeni plan (62548) | Değişim |
|---|---|---|---|
| Çalışma | 344 | 169 | |
| İptal / hata | 0 / 0 | 0 / 0 | |
| Süre ort. (ms) | 34,1 | 5.459,6 | +15888% |
| Süre maks. (ms) | 346,3 | 21.735,7 | +6177% |
| Süre sapma (ms) | 71,9 | 7.567,5 | +10426% |
| CPU ort. (ms) | 32,7 | 5.451,9 | +16587% |
| CPU maks. (ms) | 346,3 | 21.735,0 | +6177% |
| Mantıksal okuma ort. | 12.864,8 | 629.959,9 | +4797% |
| Mantıksal okuma maks. | 85.615,0 | 1.804.507,0 | +2008% |
| Fiziksel okuma | 1,3 | 1,4 | +5% |
| Yazma | 9,1 | 16,9 | +87% |
| Bellek (KB) | 1.850,5 | 2.056,3 | +11% |
| Tempdb (KB) | 227,0 | 318,9 | +40% |
| DOP | 1,0 | 1,0 | 0% |
| Satır ort. | 473,6 | 930,9 | +97% |
| Satır maks. | 3.675,0 | 2.660,0 | -28% |
| Dönem | 5.10.2026 13:00 → 8.10.2026 19:00 | 5.10.2026 22:00 → 8.10.2026 20:00 |
Bekleme kategorileri
ms / çalışma| Bekleme kategorisi | Eski plan (54132) | Yeni plan (62548) |
|---|---|---|
| CPU | 1,5 | 16,1 |
| Memory | 0,1 | 0,2 |
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.QdsQuery.PK_QdsQuery | 4.10.2026 09:10 | → 36650/37929 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_QueryHash | 4.10.2026 09:10 | → 36517/37351 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_QueryHash | 4.10.2026 14:10 | → 36223/40097 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_QueryHash | 4.10.2026 22:12 | → 35961/40267 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_QueryHash | 5.10.2026 03:12 | → 36196/41560 | evet | evet | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000002_54968AE5 | 4.10.2026 09:10 | → 36650/37929 | evet | evet | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000003_54968AE5 | 4.10.2026 09:10 | → 36650/37929 | evet | evet | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000005_54968AE5 | 4.10.2026 09:10 | → 35902/37929 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_TextHash | 4.10.2026 09:10 | → 36517/37351 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_TextHash | 4.10.2026 14:10 | → 36223/40097 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_TextHash | 4.10.2026 22:12 | → 35961/40267 | evet | evet | |
| StatsUpdated | perf.QdsQuery.IX_QdsQuery_TextHash | 5.10.2026 03:12 | → 36196/41560 | evet | evet | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000008_54968AE5 | 4.10.2026 13:36 | → 36101/38261 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000008_54968AE5 | 4.10.2026 22:26 | → 35962/40268 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000008_54968AE5 | 5.10.2026 09:17 | → 36445/42493 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000007_54968AE5 | 4.10.2026 09:30 | → 35903/37930 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000007_54968AE5 | 4.10.2026 14:30 | → 36224/40107 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000007_54968AE5 | 5.10.2026 03:30 | → 36509/42176 | hayır | hayır | |
| StatsUpdated | perf.QdsQuery._WA_Sys_00000007_54968AE5 | 5.10.2026 22:08 | → 38993/54038 | hayır | hayır | sıra belirsiz |
| StatsUpdated | perf.QdsQueryText.PK_QdsQueryText | 4.10.2026 11:10 | → 3924/3924 | evet | evet | |
| StatsUpdated | perf.QdsQueryText.PK_QdsQueryText | 5.10.2026 08:59 | → 4049/4049 | evet | evet | |
| StatsUpdated | perf.QdsQueryText._WA_Sys_00000002_567ED357 | 4.10.2026 21:41 | → 3965/3965 | hayır | hayır | |
| StatsUpdated | perf.QdsQueryText._WA_Sys_00000002_567ED357 | 5.10.2026 22:41 | → 4366/4366 | hayır | hayır | sıra belirsiz |
| StatsUpdated | perf.QueryDailyStats.PK_QueryDailyStats | 4.10.2026 08:15 | → 12685/12685 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.PK_QueryDailyStats | 4.10.2026 08:55 | → 13491/13491 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.PK_QueryDailyStats | 4.10.2026 13:31 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.PK_QueryDailyStats | 5.10.2026 00:28 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.PK_QueryDailyStats | 5.10.2026 03:00 | → 15741/15741 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.PK_QueryDailyStats | 5.10.2026 09:49 | → 23148/23148 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 4.10.2026 08:15 | → 12685/12685 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 4.10.2026 08:29 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 4.10.2026 10:04 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 4.10.2026 13:29 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 4.10.2026 22:07 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 5.10.2026 07:49 | → 15790/15790 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 | 5.10.2026 09:49 | → 23148/23148 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000005_5D80D6A1 | 5.10.2026 09:42 | → 15741/15741 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 | 4.10.2026 08:18 | → 13491/13491 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 | 4.10.2026 09:47 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 | 4.10.2026 13:12 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 | 4.10.2026 21:41 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 | 5.10.2026 03:00 | → 15741/15741 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 | 5.10.2026 09:43 | → 23099/23099 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 4.10.2026 08:15 | → 12685/12685 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 4.10.2026 08:23 | → 13491/13491 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 4.10.2026 09:47 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 4.10.2026 13:12 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 4.10.2026 21:41 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 5.10.2026 07:49 | → 15744/15744 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 | 5.10.2026 09:49 | → 23148/23148 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 | 4.10.2026 08:18 | → 13491/13491 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 | 4.10.2026 09:47 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 | 4.10.2026 13:12 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 | 4.10.2026 21:41 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 | 5.10.2026 03:00 | → 15741/15741 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 | 5.10.2026 09:43 | → 23099/23099 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 4.10.2026 08:15 | → 12685/12685 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 4.10.2026 08:23 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 4.10.2026 10:04 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 4.10.2026 13:15 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 4.10.2026 22:07 | → 13494/13494 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 5.10.2026 07:49 | → 15744/15744 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000015_5D80D6A1 | 5.10.2026 09:49 | → 23148/23148 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 4.10.2026 08:15 | → 12685/12685 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 4.10.2026 08:23 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 4.10.2026 09:47 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 4.10.2026 13:12 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 4.10.2026 21:41 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 5.10.2026 07:49 | → 15744/15744 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000016_5D80D6A1 | 5.10.2026 09:49 | → 23148/23148 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 4.10.2026 08:15 | → 12685/12685 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 4.10.2026 08:23 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 4.10.2026 09:47 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 4.10.2026 13:12 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 4.10.2026 21:41 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 5.10.2026 07:49 | → 15744/15744 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000018_5D80D6A1 | 5.10.2026 09:49 | → 23148/23148 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 4.10.2026 08:15 | → 12685/12685 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 4.10.2026 08:23 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 4.10.2026 10:04 | → 13540/13540 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 4.10.2026 13:15 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 4.10.2026 22:07 | → 13494/13494 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 5.10.2026 07:49 | → 15744/15744 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_0000001B_5D80D6A1 | 5.10.2026 09:49 | → 23148/23148 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats.IX_QueryDailyStats_Query | 4.10.2026 08:15 | → 12685/12685 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.IX_QueryDailyStats_Query | 4.10.2026 08:55 | → 13491/13491 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.IX_QueryDailyStats_Query | 4.10.2026 13:31 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.IX_QueryDailyStats_Query | 5.10.2026 00:28 | → 13540/13540 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.IX_QueryDailyStats_Query | 5.10.2026 03:00 | → 15741/15741 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats.IX_QueryDailyStats_Query | 5.10.2026 09:49 | → 23148/23148 | evet | evet | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 4.10.2026 08:15 | → 12636/12636 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 4.10.2026 08:29 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 4.10.2026 09:47 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 4.10.2026 13:12 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 4.10.2026 21:41 | → 13491/13491 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 5.10.2026 07:50 | → 15741/15741 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000006_5D80D6A1 | 5.10.2026 09:50 | → 23099/23099 | hayır | hayır | |
| StatsUpdated | perf.QueryDailyStats._WA_Sys_00000013_5D80D6A1 | 5.10.2026 22:44 | → 20420/26280 | hayır | hayır | sıra belirsiz |
| StatsUpdated | rag.QueryCandidate.PK_QueryCandidate | 5.10.2026 00:28 | → 11/11 | evet | evet | |
| StatsUpdated | rag.QueryCandidate._WA_Sys_00000002_79DEE6A5 | 5.10.2026 00:28 | → 11/11 | evet | evet | |
| StatsUpdated | rag.QueryCandidate._WA_Sys_00000003_79DEE6A5 | 5.10.2026 00:28 | → 11/11 | evet | evet | |
| StatsUpdated | rag.QueryCandidate._WA_Sys_00000004_79DEE6A5 | 5.10.2026 00:28 | → 11/11 | evet | evet |
3. Plan karşılaştırması
- Yalnız eski planda erişim: perf.QueryDailyStats Index Scan [IX_QueryDailyStats_Query]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats] (lookup); perf.QueryDailyStats Index Seek [IX_QueryDailyStats_Query]
- Yalnız yeni planda erişim: perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]
- Yalnız eski planda join: Nested Loops (Inner Join) ×3
- Tahmini maliyet: 0.127 → 0.037; tahmini satır: 1 → 1
- Eski planın index'leri
- perf.QueryDailyStats.IX_QueryDailyStats_Query, perf.QueryDailyStats.PK_QueryDailyStats, perf.QdsQuery.PK_QdsQuery, perf.QdsQueryText.PK_QdsQueryText, perf.SqlText.PK_perf_SqlText, rag.QueryCandidate.PK_QueryCandidate
- Yeni planın index'leri
- perf.QueryDailyStats.PK_QueryDailyStats, perf.QdsQuery.PK_QdsQuery, perf.QdsQueryText.PK_QdsQueryText, perf.SqlText.PK_perf_SqlText, rag.QueryCandidate.PK_QueryCandidate
4. Neden adayları
ölçüm ve eşikle; kesin değildir| Kod | Ölçülen | Eşik | Sonuç | Açıklama |
|---|---|---|---|---|
| STATS | perf.QdsQuery.PK_QdsQuery güncellendi 2026-10-04 09:10 (örnekleme %96.6) | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsQuery.PK_QdsQuery 2026-10-04 09:10 güncellendi (örnekleme %96.6); planlar bu istatistiği kullanıyor. |
| STATS | perf.QdsQuery.IX_QdsQuery_QueryHash güncellendi 2026-10-05 03:12 (örnekleme %87.1); pencerede 4 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsQuery.IX_QdsQuery_QueryHash 2026-10-05 03:12 güncellendi (örnekleme %87.1); pencerede 4 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QdsQuery._WA_Sys_00000002_54968AE5 güncellendi 2026-10-04 09:10 (örnekleme %96.6) | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsQuery._WA_Sys_00000002_54968AE5 2026-10-04 09:10 güncellendi (örnekleme %96.6); planlar bu istatistiği kullanıyor. |
| STATS | perf.QdsQuery._WA_Sys_00000003_54968AE5 güncellendi 2026-10-04 09:10 (örnekleme %96.6) | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsQuery._WA_Sys_00000003_54968AE5 2026-10-04 09:10 güncellendi (örnekleme %96.6); planlar bu istatistiği kullanıyor. |
| STATS | perf.QdsQuery.IX_QdsQuery_TextHash güncellendi 2026-10-05 03:12 (örnekleme %87.1); pencerede 4 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsQuery.IX_QdsQuery_TextHash 2026-10-05 03:12 güncellendi (örnekleme %87.1); pencerede 4 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QdsQueryText.PK_QdsQueryText güncellendi 2026-10-05 08:59 (örnekleme %100); pencerede 2 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QdsQueryText.PK_QdsQueryText 2026-10-05 08:59 güncellendi (örnekleme %100); pencerede 2 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QueryDailyStats.PK_QueryDailyStats güncellendi 2026-10-05 09:49 (örnekleme %100); pencerede 6 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QueryDailyStats.PK_QueryDailyStats 2026-10-05 09:49 güncellendi (örnekleme %100); pencerede 6 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 güncellendi 2026-10-05 09:49 (örnekleme %100); pencerede 7 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 2026-10-05 09:49 güncellendi (örnekleme %100); pencerede 7 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 güncellendi 2026-10-05 09:43 (örnekleme %100); pencerede 6 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 2026-10-05 09:43 güncellendi (örnekleme %100); pencerede 6 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 güncellendi 2026-10-05 09:49 (örnekleme %100); pencerede 7 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 2026-10-05 09:49 güncellendi (örnekleme %100); pencerede 7 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 güncellendi 2026-10-05 09:43 (örnekleme %100); pencerede 6 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 2026-10-05 09:43 güncellendi (örnekleme %100); pencerede 6 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | perf.QueryDailyStats.IX_QueryDailyStats_Query güncellendi 2026-10-05 09:49 (örnekleme %100); pencerede 6 güncelleme | değişimden önceki 48 saat | destekliyor | İstatistik perf.QueryDailyStats.IX_QueryDailyStats_Query 2026-10-05 09:49 güncellendi (örnekleme %100); pencerede 6 güncelleme; planlar bu istatistiği kullanıyor. |
| STATS | rag.QueryCandidate.PK_QueryCandidate güncellendi 2026-10-05 00:28 (örnekleme %100) | değişimden önceki 48 saat | destekliyor | İstatistik rag.QueryCandidate.PK_QueryCandidate 2026-10-05 00:28 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor. |
| STATS | rag.QueryCandidate._WA_Sys_00000002_79DEE6A5 güncellendi 2026-10-05 00:28 (örnekleme %100) | değişimden önceki 48 saat | destekliyor | İstatistik rag.QueryCandidate._WA_Sys_00000002_79DEE6A5 2026-10-05 00:28 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor. |
| STATS | rag.QueryCandidate._WA_Sys_00000003_79DEE6A5 güncellendi 2026-10-05 00:28 (örnekleme %100) | değişimden önceki 48 saat | destekliyor | İstatistik rag.QueryCandidate._WA_Sys_00000003_79DEE6A5 2026-10-05 00:28 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor. |
| STATS | rag.QueryCandidate._WA_Sys_00000004_79DEE6A5 güncellendi 2026-10-05 00:28 (örnekleme %100) | değişimden önceki 48 saat | destekliyor | İstatistik rag.QueryCandidate._WA_Sys_00000004_79DEE6A5 2026-10-05 00:28 güncellendi (örnekleme %100); planlar bu istatistiği kullanıyor. |
| STATS | 11 istatistik güncellendi, planlar kullanmıyor | desteklemiyor | Pencerede güncellenen ama iki planın da kullanmadığı istatistikler aday değil: perf.QdsQuery._WA_Sys_00000005_54968AE5, perf.QdsQuery._WA_Sys_00000008_54968AE5, perf.QdsQuery._WA_Sys_00000007_54968AE5, perf.QdsQueryText._WA_Sys_00000002_567ED357, perf.QueryDailyStats._WA_Sys_00000005_5D80D6A1 (+6). | |
| WORKLOAD | çalışma başına satır 473.63 → 930.89 (1.97×) | ≥ 2× | desteklemiyor | Çalışma başına satır benzer (473.63 → 930.89): iş yükü farkı yok. |
| PARAM | baskın plan 7 kez el değiştirdi | ≥ 3 | destekliyor | İki plan aynı dönemde sırayla kullanılıyor (7 el değiştirme): plan seçimi bir olaydan çok parametre değerine bağlı (parametre duyarlılığı). |
5. Karşı kanıtlar
- HIGH_VARIANCE (zayıf): Eski planın süre sapması ortalamanın %211'i: ortalama güvenilir değil.
- HIGH_VARIANCE (zayıf): Yeni planın süre sapması ortalamanın %139'i: ortalama güvenilir değil.
6. Korpus metni önizlemesi
onaylanınca RAG hafızasına bu metin girer (başlığa onaylayan eklenir)Plan change case #P425 | DB: DB-11 | Regression | Confidence: Medium (review pending) Query: (@from datetime,@to datetime,@srv int,@dbName nvarchar(?),@minExec bigint,@len int,@regMin bigint,@regression bit,@regRatio float,@candidates bit,@qHash varbinary(?),@qId bigint,@qText nvarchar(?))WITH cur AS ( SELECT ServerID, DatabaseName, query_hash, ISNULL(SUM(Executions), ?) AS Executions, ISNULL(SUM(TotalCpuMs), ?) AS TotalCpuMs, ISNULL(SUM(TotalDurationMs), ?) AS TotalDurationMs, MAX(P95DurationMs) AS P95DurationMs, ISNULL(SUM(TotalLogicalReads), ?) AS TotalLogicalReads, ISNULL(SUM(CAST(BlockedOthersCount AS bigint)), ?) AS BlockedOthersCount, ISNULL(MAX(PlanCount), ?) AS PlanCount, COUNT(*) AS DayCount, MAX(ObjectName) AS ObjectName FROM perf.QueryDailyStats WHERE StatDateUtc BETWEEN @from AND @to AND (@srv IS NULL OR ServerID = @srv) AND (@dbName IS NULL OR DatabaseName = @dbName) GROUP BY ServerID, DatabaseName, query_hash HAVING ISNULL(SUM(Executions), ?) >= @minExec ), prev AS ( SELECT ServerID, DatabaseName, query_hash, SUM(Executions) AS Executions, SUM(TotalDurationMs) AS TotalDurationMs FROM perf.QueryDailyStats WHERE StatDateUtc BETWEEN DATEADD(day, -@len, @from) AND DATEADD(day, -?, @from) AND (@srv IS NULL OR ServerID = @srv) AND (@dbName IS NULL OR DatabaseName = @dbName) GROUP BY ServerID, DatabaseName, query_hash ), ranked AS ( SELECT c.*, CASE WHEN c.Executions >= @regMin AND p.Executions >= @regMin AND p.TotalDurationMs > ? THEN (c.TotalDurationMs / c.Executions) / (p.TotalDurationMs / p.Executions) END AS RegressionRatio FROM cur AS c LEFT JOIN prev AS p ON p.ServerID = c.ServerID AND p.DatabaseName = c.DatabaseName AND p.query_hash = c.query_hash ) SELECT c.*, ISNULL(t.State, ?) AS State, qc.Reasons AS CandidateReasons INTO #r FROM ranked AS c LEFT JOIN #t AS t ON t.ServerID = c.ServerID AND t.DatabaseName = c.DatabaseName AND t.QueryHash = c.query_hash LEFT JOIN rag.QueryCandidate AS qc ON qc.ServerID = c.ServerID AND qc.DatabaseName = c.DatabaseName AND qc.QueryHash = c.query_hash WHERE (@regression = ? OR c.RegressionRatio >= @regRatio) AND (@candidates = ? OR qc.Reasons IS NOT NULL) AND (@qHash IS NULL OR c.query_hash = @qHash) AND (@qId IS NULL OR EXISTS (SELECT ? FROM perf.QdsQuery AS q WHERE q.ServerID = c.ServerID AND q.DatabaseName = c.DatabaseName AND q.query_hash = c.query_hash AND q.query_id = @qId)) AND (@qText IS NULL OR c.ObjectName LIKE @qText OR EXISTS (SELECT ? FROM perf.QueryDailyStats AS d LEFT JOIN perf.QdsQueryText AS qt ON qt.TextHash = d.SampleTextHash LEFT JOIN perf.SqlText AS st ON st.TextHash = d.SampleTextHash WHERE d.ServerID = c.ServerID AND d.DatabaseName = c.DatabaseName AND d.query_hash = c.query_hash AND d.StatDateUtc BETWEEN @from AND @to AND d.SampleTextHash IS NOT NULL AND (qt.query_sql_text LIKE @qText OR st.SqlText LIKE @qText))) Change: 2026-10-05 22:00 UTC, plan 54132 → 62548, pattern: Alternating (7 switches) Impact (Query Store, per execution): duration 34.1 → 5459.6 ms (+15888%); CPU 32.7 → 5451.9 ms (+16587%); reads 12,865 → 629,960 (+4797%); rows 473.63 → 930.89 (+97%) Plan difference: Access only in the old plan: perf.QueryDailyStats Index Scan [IX_QueryDailyStats_Query]; perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats] (lookup); perf.QueryDailyStats Index Seek [IX_QueryDailyStats_Query]; Access only in the new plan: perf.QueryDailyStats Clustered Index Seek [PK_QueryDailyStats]; Join only in the old plan: Nested Loops (Inner Join) ×3; Estimated cost: 0.127 → 0.037; estimated rows: 1 → 1 Candidate cause: STATS — Statistic perf.QdsQuery.PK_QdsQuery was updated 2026-10-04 09:10 (sampled 96.6%); the plans use this statistic. Candidate cause: STATS — Statistic perf.QdsQuery.IX_QdsQuery_QueryHash was updated 2026-10-05 03:12 (sampled 87.1%); 4 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QdsQuery._WA_Sys_00000002_54968AE5 was updated 2026-10-04 09:10 (sampled 96.6%); the plans use this statistic. Candidate cause: STATS — Statistic perf.QdsQuery._WA_Sys_00000003_54968AE5 was updated 2026-10-04 09:10 (sampled 96.6%); the plans use this statistic. Candidate cause: STATS — Statistic perf.QdsQuery.IX_QdsQuery_TextHash was updated 2026-10-05 03:12 (sampled 87.1%); 4 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QdsQueryText.PK_QdsQueryText was updated 2026-10-05 08:59 (sampled 100%); 2 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QueryDailyStats.PK_QueryDailyStats was updated 2026-10-05 09:49 (sampled 100%); 6 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QueryDailyStats._WA_Sys_00000008_5D80D6A1 was updated 2026-10-05 09:49 (sampled 100%); 7 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QueryDailyStats._WA_Sys_00000003_5D80D6A1 was updated 2026-10-05 09:43 (sampled 100%); 6 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QueryDailyStats._WA_Sys_00000007_5D80D6A1 was updated 2026-10-05 09:49 (sampled 100%); 7 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QueryDailyStats._WA_Sys_00000004_5D80D6A1 was updated 2026-10-05 09:43 (sampled 100%); 6 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic perf.QueryDailyStats.IX_QueryDailyStats_Query was updated 2026-10-05 09:49 (sampled 100%); 6 updates in the window; the plans use this statistic. Candidate cause: STATS — Statistic rag.QueryCandidate.PK_QueryCandidate was updated 2026-10-05 00:28 (sampled 100%); the plans use this statistic. Candidate cause: STATS — Statistic rag.QueryCandidate._WA_Sys_00000002_79DEE6A5 was updated 2026-10-05 00:28 (sampled 100%); the plans use this statistic. Candidate cause: STATS — Statistic rag.QueryCandidate._WA_Sys_00000003_79DEE6A5 was updated 2026-10-05 00:28 (sampled 100%); the plans use this statistic. Candidate cause: STATS — Statistic rag.QueryCandidate._WA_Sys_00000004_79DEE6A5 was updated 2026-10-05 00:28 (sampled 100%); the plans use this statistic. Candidate cause: PARAM — The two plans alternate in the same period (7 switches): plan choice depends on the parameter value rather than an event (parameter sensitivity). Counter-evidence: HIGH_VARIANCE — The old plan's duration standard deviation is 211% of the average: the average is not reliable. Counter-evidence: HIGH_VARIANCE — The new plan's duration standard deviation is 139% of the average: the average is not reliable. Confidence rationale: Medium: more than one candidate (STATS, PARAM) — competing explanations. Weak counter-evidence: HIGH_VARIANCE. 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.