Pet*_*ter 2 execution-plan sql-server-2008-r2
如果我在我们的生产服务器上运行以下查询:
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
Run Code Online (Sandbox Code Playgroud)
我的主要查询是“创建过程.......”这是否意味着 sql server 重新编译这个存储过程不止一次?
不,关于您的查询,这意味着此程序比其他程序花费更多时间
和
sql server 定期重新编译过程或其内部语句,这是一种预期行为,取决于服务器活动、内存压力、用户命令、RECOMPILE 选项、基础数据更改量等等。
更新:
查询是从 CREATE PROCEDURE 开始的,因为 sql server 以这种方式呈现 SP 的主体。
您甚至可以通过此查询深入了解过程的内部语句:
Select
s3.name as [Obj Name],
s3.type as [Obj Type],
(select top 1 substring(text,(s1.statement_start_offset+2)/2,
(CASE when s1.statement_end_offset = -1 then len(convert(nvarchar(max),text))*2
else s1.statement_end_offset end - s1.statement_start_offset) /2 ) FROM sys.dm_exec_sql_text(s1.sql_handle)) as [SQL Statement],
execution_count,
plan_generation_num,
last_execution_time,
((total_worker_time+0.0)/execution_count)/1000 as [avg_worker_time],
total_worker_time/1000.0 total_worker_time,
last_worker_time/1000.0 last_worker_time,
min_worker_time/1000.0 min_worker_time,
max_worker_time/1000.0 max_worker_time,
((total_logical_reads+0.0)/execution_count) as [avg_logical_reads],
total_logical_reads+0.0 total_logical_reads,
last_logical_reads+0.0 last_logical_reads,
min_logical_reads+0.0 min_logical_reads,
max_logical_reads+0.0 max_logical_reads,
((total_logical_writes+0.0)/execution_count) as [avg_logical_writes],
total_logical_writes+0.0 total_logical_writes,
last_logical_writes+0.0 last_logical_writes,
min_logical_writes+0.0 min_logical_writes,
max_logical_writes+0.0 max_logical_writes,
((total_logical_writes+0.0)/execution_count + (total_logical_reads+0.0)/execution_count) as [avg_logical_IO],
total_logical_writes + total_logical_reads+0.0 total_logical_IO,
last_logical_writes +last_logical_reads+0.0 last_logical_IO,
min_logical_writes +min_logical_reads+0.0 min_logical_IO,
max_logical_writes + max_logical_reads+0.0 max_logical_IO
from sys.dm_exec_query_stats s1
cross apply sys.dm_exec_sql_text(sql_handle) as s2
join sys.objects s3 on ( s2.objectid = s3.object_id )
left join sys.schemas sch on(s3.schema_id = sch.schema_id)
where s2.dbid = db_id()
order by s3.name, s1.sql_handle
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2792 次 |
最近记录: |