是什么导致执行计划快速从计划缓存中删除?

时间:2017-02-01 03:44:44

标签: sql-server sql-execution-plan

我想知道是什么导致执行计划很快从SQL Server 2012(SP3)计划缓存中删除(<1分钟)。

当我在我的代码中运行此脚本时,该计划在开始时存在,但在1分钟内老化,没有其他有意义的活动发生。这是在具有16G RAM的开发机器上,在执行时可以释放8G以上。 SQL Server实例限制为2G最大内存。

create table Temp923835 (id int);
go
insert into Temp923835 select message_id from sys.messages;
go
select count(*) from Temp923835 a inner join Temp923835 b on (a.id=b.id) where a.id > 3 
go

SELECT 'First Pass' as Phase, query_plan, text
FROM sys.dm_exec_cached_plans cp 
CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st 
CROSS APPLY sys.dm_exec_query_plan ( cp.plan_handle ) qp 
where text like 'select count(*) from Temp923835%';

waitfor delay '00:01:00';

SELECT 'Second Pass' as Phase, query_plan, text
FROM sys.dm_exec_cached_plans cp 
CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st 
CROSS APPLY sys.dm_exec_query_plan ( cp.plan_handle ) qp 
where text like 'select count(*) from Temp923835%';

drop table Temp923835;

我希望缓存会延迟一段时间。

1 个答案:

答案 0 :(得分:0)

正如@clifton_h在上面的评论中指出的那样,它与内存有关。我将实例最大内存从2GB更改为4GB,现在测试脚本一直通过。

相关问题