您的位置:首页 > 数据库

获取数据库缓存中的执行计划

2014-06-06 17:31 169 查看
我们经常会遇到同一个语句,因为执行计划不同,产生了低效率的执行计划

但又会因为生产环境或者数据量等原因不方便重现问题,这个时候我们可以通过下面语句,从缓存中获取重启SQL前所有执行计划,从而设法优化通过

或者通过第二个语句适当删除效率低下的执行计划,强迫数据库编译新的执行计划

--获取包含固定语句的所有缓存中的执行计划

use master

go

select c.plan_handle,

c.usecounts,

c.cacheobjtype,

c.objtype,

t.text,

qp.query_plan,

c.size_in_bytes as '对象所耗费的字节' ,*

from sys.dm_exec_cached_plans c with(nolock)

cross apply sys.dm_exec_sql_text(c.plan_handle) t

cross apply sys.dm_exec_query_plan(c.plan_handle) qp

where t.text like '%DISTINCT(sm.SysNo)%'

--在缓存中删除固定pan_handle的执行计划

dbcc freeproccache(pan_handle)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: