Bên cạnh việc sử dụng SQL Server Profiler, có cách nào để theo dõi các thủ tục được lưu trữ nào đang được sử dụng hay ít nhất là khi chúng được thực hiện lần cuối không?
Bên cạnh việc sử dụng SQL Server Profiler, có cách nào để theo dõi các thủ tục được lưu trữ nào đang được sử dụng hay ít nhất là khi chúng được thực hiện lần cuối không?
Câu trả lời:
Bạn có thể nhìn vào bộ đệm của kế hoạch để có ý tưởng khá tốt về việc sử dụng Thủ tục được lưu trữ. Lấy truy vấn này, ví dụ:
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
Điều này sẽ cung cấp cho bạn các usecounts
thủ tục được lưu trữ được lưu trữ liên quan đến SomeDB
.
Lưu ý: bộ đệm kế hoạch chứa các kế hoạch thực hiện. Việc duy trì các kế hoạch này có nhiều yếu tố liên quan. Trong khi điều này sẽ cung cấp cho bạn một ý tưởng tốt về những gì đang được sử dụng và tần suất, chắc chắn đó không phải là tổng số các thủ tục được lưu trữ và tần suất / thời gian chúng được thực thi.
Bạn có thể xem cái này cũng như nó chứa thông tin last_execution_time
của mọi thủ tục được lưu trữ.
SELECT DB_NAME(database_id)
,OBJECT_NAME(object_id,database_id)
,cached_time
,last_execution_time
,execution_count
FROM sys.dm_exec_procedure_stats