ติดตามการใช้งานขั้นตอนการจัดเก็บ


19

นอกจากการใช้ SQL Server Profiler แล้วยังมีวิธีการติดตามว่ามีการใช้โพรซีเดอร์ใดบ้างหรืออย่างน้อยตอนที่มันถูกประมวลผลครั้งสุดท้าย?


4
คุณสามารถดูแผนแคชได้ตลอดเวลา SQL Server จะไม่ติดตามสิ่งนี้ตลอดไปเนื่องจากข้อมูลเมตามีขนาดใหญ่และมีราคาแพง
JNK

คำตอบ:


17

คุณสามารถดูในแคชแผนเพื่อให้ได้แนวคิดที่ดีเกี่ยวกับการใช้กระบวนงานที่เก็บไว้ ใช้แบบสอบถามนี้เช่น:

select
    db_name(st.dbid) as database_name,
    object_name(st.objectid) as name,
    p.size_in_bytes / 1024 as size_in_kb,
    p.usecounts,
    st.text
from sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(p.plan_handle) st
where p.objtype = 'proc'
and st.dbid = db_id('SomeDatabase')
order by p.usecounts desc

นี้จะทำให้คุณมีวิธีการจัดเก็บที่จะถูกเก็บไว้ที่เกี่ยวข้องกับusecountsSomeDB

หมายเหตุ: แคชแผนประกอบด้วยแผนการดำเนินการ การเก็บรักษาแผนเหล่านี้มีปัจจัยหลายอย่างที่เกี่ยวข้อง ในขณะที่สิ่งนี้จะช่วยให้คุณมีความคิดที่ดีว่ามีการใช้งานอย่างไรและบ่อยครั้งเพียงใดมันไม่รวมขั้นตอนการจัดเก็บทั้งหมดที่ใช้งานอยู่

อ้างอิง BOL เกี่ยวกับ Plan Cache


4
โปรดจำไว้ว่านี่เป็นเพียงการบอกคุณว่า sp ได้รับการดำเนินการค่อนข้างเร็วและไม่ได้ให้ข้อมูลเกี่ยวกับ procs ที่ไม่ได้อยู่ในที่นี้ สิ่งต่าง ๆ เช่น procs ที่อยู่เบื้องหลังรายงานประจำไตรมาสนั้นมีการเรียกใช้งานไม่บ่อยนัก แต่กำลังถูกใช้งานอยู่ โดยพื้นฐานแล้วนี่จะให้รายการการวิจัยในแอปพลิเคชันที่เข้าถึงฐานข้อมูลของคุณ
HLGEM

1
@HLGEM แม่นยำ ฉันพยายามทำให้จุดนั้นชัดเจนในคำตอบของฉัน
Thomas Stringer

เป็นไปได้ไหมที่จะทำสิ่งนี้ในช่วงวันที่เฉพาะเจาะจง? (เช่นวัน / เดือนที่แล้ว ฯลฯ )
Jose Parra

โปรดทราบว่าแบบสอบถามนี้จะไม่ส่งคืนแถวสำหรับกระบวนงานที่เก็บไว้ซึ่งมีการเปลี่ยนแปลงและไม่ได้ดำเนินการหลังจาก
Axel2D

10

คุณสามารถดูสิ่งนี้ได้เช่นเดียวกับที่มีข้อมูลlast_execution_timeของทุกโพรซีเดอร์ที่เก็บไว้

    SELECT DB_NAME(database_id)
    ,OBJECT_NAME(object_id,database_id)
    ,cached_time
    ,last_execution_time
    ,execution_count
FROM sys.dm_exec_procedure_stats

มีข้อแม้สำหรับสรรพสินค้านี้ สถิติเหล่านี้จะถูกเก็บไว้ตั้งแต่การดำเนินการฐานข้อมูลครั้งล่าสุดเท่านั้น ฉันกำลังยุ่งอยู่กับการเขียนงานที่จะจัดเก็บลงในตารางวันละครั้ง
earthling42

@ earthling42 คุณเคยเขียนงานที่จัดเก็บลงในตารางทุกวันหรือไม่?
Alex Chung

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