我想知道是什么导致执行计划很快从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;
我希望缓存会延迟一段时间。
答案 0 :(得分:0)
正如@clifton_h在上面的评论中指出的那样,它与内存有关。我将实例最大内存从2GB更改为4GB,现在测试脚本一直通过。