Obje ararag.usp_ReviewQueue
Demo modu

rag.usp_ReviewQueue

yordam

DB-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ışmaOrt. süre (ms) Ort. CPU (ms)Ort. okumaSü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.
rag.usp_ReviewQueuerag.usp_ReviewQueue test_ReviewQueue.test karar b…DB-11.test_ReviewQueue.test karar bekleyenler bedele gore ve sayi · aynı veritabanı DBA.fn_NowDB-11.DBA.fn_Now · aynı veritabanı perf.QueryDailyStatsDB-11.perf.QueryDailyStats · aynı veritabanı rag.AnalysisRecommendationDB-11.rag.AnalysisRecommendation · aynı veritabanı rag.AnalysisRequestDB-11.rag.AnalysisRequest · aynı veritabanı rag.PlanChangeCaseDB-11.rag.PlanChangeCase · aynı veritabanıKullananlar Kullandıkları
aynı veritabanıbaşka veritabanılinked server
YönNesneTürKapsam
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ı
Tanım
-- İ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.