是什么导致执行计划被快速从计划缓存中删除?
What causes execution plans to be removed from plan cache quickly?
我想知道是什么原因导致从 SQL Server 2012 (SP3) 计划缓存中删除执行计划的速度非常快(< 1 分钟)。
当我在我的代码中 运行 这个脚本时,该计划一开始就存在,但在 1 分钟内就过时了,没有其他有意义的 activity 发生。这是在具有 16G RAM 的开发机器上,执行时有超过 8G 的可用空间。 SQL 服务器实例最大内存限制为 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;
我希望缓存能停留更长的时间。
正如@clifton_h 在上面的评论中指出的那样,它与内存有关。我将实例最大内存从 2GB 更改为 4GB,现在测试脚本始终通过。
我想知道是什么原因导致从 SQL Server 2012 (SP3) 计划缓存中删除执行计划的速度非常快(< 1 分钟)。
当我在我的代码中 运行 这个脚本时,该计划一开始就存在,但在 1 分钟内就过时了,没有其他有意义的 activity 发生。这是在具有 16G RAM 的开发机器上,执行时有超过 8G 的可用空间。 SQL 服务器实例最大内存限制为 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;
我希望缓存能停留更长的时间。
正如@clifton_h 在上面的评论中指出的那样,它与内存有关。我将实例最大内存从 2GB 更改为 4GB,现在测试脚本始终通过。