如果我在我们的生产服务器上运行以下查询:
SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time / 100000 AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) / 100000 AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
,s.plan_handle, s.plan_generation_num
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time / 100000 DESC
我的主要查询是“创建过程......”这是否意味着 sql server 重新编译这个存储过程不止一次?
不,关于您的查询,这意味着此过程比其他过程花费更多时间
和
sql server 定期重新编译过程或其内部语句,这是一种预期行为,取决于服务器活动、内存压力、用户命令、RECOMPILE 选项、基础数据更改量等等。
更新:
查询是从 CREATE PROCEDURE 开始的,因为 sql server 以这种方式呈现 SP 的主体。
您甚至可以通过此查询深入了解过程的内部语句: