rag.usp_ReviewQueue
yordamDB-11 · değişiklik 9.10.2026 · Obje aramaya dön
İfadeler
2 ifade ·
626 çalışma ·
toplam 238,4 sn
| Sorgu (query_hash) | Çalışma | Ort. süre (ms) | Ort. CPU (ms) | Ort. okuma | Süredeki pay |
|---|---|---|---|---|---|
| 0x5074A5F6B3ABECAC | 617 | 386,4 | 385,7 | 57.212 | %100 |
| 0xE7D1B451815F22A0 | 9 | 0,6 | 0,6 | 34 | %0 |
Bağımlılıklar
Doğrudan referanslar (sys.sql_expression_dependencies); dinamik SQL ve geç bağlanan adlar görünmeyebilir.aynı veritabanıbaşka veritabanılinked server
| Yön | Nesne | Tür | Kapsam |
|---|---|---|---|
| kullanıyor | DBA.fn_Now | fonksiyon | aynı veritabanı |
| kullanıyor | perf.QueryDailyStats | tablo | aynı veritabanı |
| kullanıyor | rag.AnalysisRecommendation | tablo | aynı veritabanı |
| kullanıyor | rag.AnalysisRequest | tablo | aynı veritabanı |
| kullanıyor | rag.PlanChangeCase | tablo | aynı veritabanı |
| kullanan | test_ReviewQueue.test karar bekleyenler bedele gore ve sayi | yordam | aynı veritabanı |
-- İnceleme kuyruğu (spec 2026-09-30-alt-proje-2 §E, mockup 23): DBA kararı bekleyen işler tek listede. Idempotent.
-- (1) Biten analizin kararsız önerileri (analiz başına bir satır), (2) Pending/Unsure plan değişim vakaları.
-- Script'i olmayan öneri de onay/red alır (vaka hafızası; canlı #1178-1180): sayılır, yalnız "Uygulandı" olamaz.
-- Bedel: öznenin (sorgu ya da nesne) son 7 gündeki günlük ortalama toplam süresi (sn/gün); manuel analizde yok.
CREATE PROCEDURE rag.usp_ReviewQueue
@NowUtc datetime = NULL, @Top int = 200
AS
BEGIN
SET NOCOUNT ON;
SET @NowUtc = ISNULL(@NowUtc, DBA.fn_Now());
DECLARE @from datetime = DATEADD(day, -7, CAST(CAST(@NowUtc AS date) AS datetime));
;WITH items AS (
SELECT 'Analysis' AS Kind, a.RequestID AS RefId, a.TargetType, a.ServerID, a.DatabaseName, a.QueryHash, a.ObjectName,
CAST(NULL AS varchar(10)) AS Direction, CAST(NULL AS varchar(6)) AS Confidence,
p.Pending, p.Invalid, a.FinishedUtc AS SinceUtc
FROM rag.AnalysisRequest AS a
CROSS APPLY (SELECT COUNT(*) AS Pending, SUM(IIF(r.ValidationStatus = 'Invalid', 1, 0)) AS Invalid
FROM rag.AnalysisRecommendation AS r WHERE r.RequestID = a.RequestID AND r.Decision = 'Pending') AS p
WHERE a.Status = 'Done' AND p.Pending > 0
UNION ALL
SELECT 'PlanChange', c.CaseID, 'Query', c.ServerID, c.DatabaseName, c.query_hash, NULL,
c.Direction, c.Confidence, 1, 0, c.DetectedUtc
FROM rag.PlanChangeCase AS c
WHERE c.Status IN ('Pending', 'Unsure')
)
SELECT TOP (@Top) i.Kind, i.RefId, i.TargetType, i.ServerID AS ServerId, i.DatabaseName, i.QueryHash, i.ObjectName,
i.Direction, i.Confidence, i.Pending, ISNULL(i.Invalid, 0) AS Invalid, i.SinceUtc,
DATEDIFF(hour, i.SinceUtc, @NowUtc) AS AgeHours, cost.SecondsPerDay
FROM items AS i
OUTER APPLY (SELECT SUM(q.TotalDurationMs) / 1000.0 / 7 AS SecondsPerDay FROM perf.QueryDailyStats AS q
WHERE q.ServerID = i.ServerID AND q.DatabaseName = i.DatabaseName AND q.StatDateUtc >= @from
AND ((i.QueryHash IS NOT NULL AND q.query_hash = i.QueryHash)
OR (i.QueryHash IS NULL AND i.ObjectName IS NOT NULL AND q.ObjectName = i.ObjectName))) AS cost
ORDER BY ISNULL(cost.SecondsPerDay, -1) DESC, i.SinceUtc;
END;
Bu nesnenin analizleri
Kayıt yok
Bu nesne için analiz yok.