SQL Server 2008 เก็บวันที่สร้างแผนการดำเนินการหรือไม่


13

เราเพิ่งอัปเกรดแอปพลิเคชันที่เราใช้ซึ่งเกี่ยวข้องกับการแก้ไขสคีมาสำหรับฐานข้อมูล การเปลี่ยนแปลงเหล่านี้อาจบังคับให้แผนการดำเนินการแคชถูกยกเลิก หาก SQL Server ถูกบังคับให้สร้างแผนใหม่จำนวนมากสิ่งนี้อาจทำให้ประสบการณ์ผู้ใช้ช้าลง ฉันต้องการตรวจสอบว่าเป็นกรณีนี้หรือไม่

ดังนั้นคำถามของฉันคือ SQL Server 2008 เก็บวันที่สร้างแผนการดำเนินการที่แคชหรือไม่ มุมมองการจัดการsys.dm_exec_cached_plansไม่มีฟิลด์วันที่ใด ๆ ดังนั้นฉันจึงไม่สงสัย

คำตอบ:


12

มันไม่ได้ถูกเก็บไว้ในsys.dm_exec_cached_plansและไม่มีการฝังไว้ใน XML แผนที่ฉันสามารถหาได้ อย่างไรก็ตามมีข้อมูลที่เป็นประโยชน์ใน DMV อื่น ๆ

สำหรับขั้นตอนการจัดเก็บเราจะได้รับเวลาที่แผนถูกแคชจากsys.dm_exec_procedure_stats:

SELECT TOP(250) 
    p.name AS [SP Name]
    , ps.execution_count
    , ps.cached_time
FROM 
    sys.procedures p WITH (NOLOCK)
INNER JOIN 
    sys.dm_exec_procedure_stats ps WITH (NOLOCK)
ON  p.[object_id] = ps.[object_id]
WHERE 
    ps.database_id = DB_ID()
ORDER BY 
    ps.cached_time DESC 
OPTION 
    (RECOMPILE);

สำหรับคิวรีแบบเฉพาะกิจจะมีเวลาสร้างในsys.dm_exec_query_stats:

SELECT TOP(250) 
    st.[text] AS [QueryText]
    , qs.execution_count
    , qs.creation_time
FROM 
    sys.dm_exec_cached_plans cp WITH (NOLOCK)
INNER JOIN
    sys.dm_exec_query_stats qs WITH (NOLOCK)
ON  qs.plan_handle = cp.plan_handle
CROSS APPLY 
    sys.dm_exec_sql_text(cp.plan_handle) st
WHERE 
    cp.objtype = N'Adhoc' 
ORDER BY 
    qs.creation_time DESC 
OPTION 
    (RECOMPILE);

ตามที่ @SqlKiwi ... การเปลี่ยนแปลงจาก creation_time เป็น cached_time นั้นเป็นเพราะขั้นตอนและทริกเกอร์ถูกเพิ่มเข้ามาในปี 2008 และโอกาสถูกเลือกชื่อที่มีความหมายมากขึ้น เวลาที่สร้าง / แคชสะท้อนถึงการรวบรวมครั้งสุดท้ายไม่ใช่เวลาการสร้างของแผนดั้งเดิม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.