小编rom*_*n m的帖子

从 sys.dm_exec_query_stats 中删除了关键查询计划,而保留了琐碎的项目

运行 SQL Server Express 2019。

有一个包含 11 条 sql 语句的复杂存储过程(当从sys.dm_exec_query_statsby 中选择时plan_handle)。

其中 9 个语句是基于传入参数的简单变量设置,最后 2 个语句 ( IF/ELSE) 完成所有工作并返回数据(例如query_hash0x111... 和 0x222...)。

基于输入参数的数据量有很大的可变性,所以我用最佳值“准备”存储过程以确保快速执行。

我注意到每隔几天(有时更频繁),我的最后 2 个语句(query_hash0x111...和 ​​0x222...)被转储sys.dm_exec_query_stats,然后根据下一个存储过程中来自用户的任何参数重新生成称呼。

我通过查看creation_time列知道这一点,它反映了前 9 个查询的“启动”时间,以及query_hash0x111... 和 0x222...的稍后时间。

据我了解,缓存计划在内存压力下被清除,较少使用的计划首先被清除。我的查询被大量使用,并且我有很多其他缓存计划,其中 1 次执行会持续一段时间。

问题:为什么我最常用的查询会转储表单缓存,我该如何阻止它发生?

sql-server plan-cache sql-server-2019

2
推荐指数
2
解决办法
381
查看次数

标签 统计

plan-cache ×1

sql-server ×1

sql-server-2019 ×1