Jak*_*ade 5 sql-server performance stored-procedures
准确衡量存储过程的性能(完成时间)的最佳方法是什么?
我即将开始尝试优化怪物存储过程,为了正确判断我的调整是否有任何影响,我需要一些东西来比较之前和之后.
我的想法到目前为止:
还有其他选择吗?
DMV中有许多详细的性能信息 dm_exec_query_stats
DECLARE @procname VARCHAR(255)
SET @procname = 'your proc name'
SELECT * FROM sys.dm_exec_query_stats WHERE st.objectid = OBJECT_ID(@procname)
Run Code Online (Sandbox Code Playgroud)
这将为您提供每个缓存语句的累积性能数据和执行计数.
您可以使用DBCC FREEPROCCACHE重置计数器(不要在生产系统中运行它,因为它将清除所有缓存的查询计划).
您可以通过扩展此查询来获取每个语句的查询计划:
SELECT SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) [sub_statement]
,*, CONVERT(XML, tqp.query_plan)
FROM sys.dm_exec_query_stats qs CROSS APPLY
sys.dm_exec_sql_text(sql_handle) st CROSS APPLY
sys.dm_exec_query_plan(plan_handle) qp CROSS APPLY
sys.dm_exec_text_query_plan(plan_handle, statement_start_offset, statement_end_offset ) tqp
WHERE st.objectid = OBJECT_ID(@procname)
ORDER BY statement_start_offset, execution_count
Run Code Online (Sandbox Code Playgroud)
这将为您提供有关SP的哪些部分表现不佳的指示,以及 - 如果您包含执行计划 - 为什么.
Profiler是最可靠的方法.您也可以使用SET STATISTICS IO ON,SET STATISTICS TIME ON但这些不包括标量UDF的全部影响.
您还可以在SSMS中打开"包含客户端统计信息"选项,以概览最近10次运行的性能.
| 归档时间: |
|
| 查看次数: |
7852 次 |
| 最近记录: |