plan cache命中率比较低的问题

1、plan cache分配资源过少会造成plancache命中率较低的问题吗?
2、并发量大导致内存快速写满会造成planche命中率较低吗?
3、业务量或会话增加,导致内存不足的情况会造成planche命中率较低吗?
4、相似语句参数随机,会造成plancache命中率较低吗?

你的问题我们已经收到,会联系相关同学回复你

如果没有动态SQL,世界会很美好

快速参数化就是解决的这些问题。
当然plan cache太小,那没办法,淘汰赶不上写入,那只能获取执行计划时间比较长了。可以在sql_audit中看到具体耗时

我需要知道1、2、3、4分别会不会造成plancache命中率较低的问题,能够分条解答下吗?多谢

for 1:
这个需要看流量, 如果流量一直只是一个query, 那么这个plan将一直存在plan cache中, 而且一直命中;但是, 如果流量是多种多样的query, 那么由于资源分配有限, plan 将会发生频繁汰换, 最终分配资源过少会导致plan cache命中过低的.

for 2:
并发量大导致内存快速写满会造成plan的频繁汰换, 这将导致计划命中率降低. 但是, 需要注意的是并发量大不一定会导致plan cache命中率降低, 只要汰换率没有上去, 命中率也不会降低.

for 3
同2, 主要看是否触发了频繁汰换

for 4:
这个需要看是哪些参数的变化, 如果是可参数化的参数变化, 那么将会命中同一plan, 那么命中率不会降低; 但是, 如果是不可参数化的参数变化(例如 order by 1, order by 2), 那么将不会命中同一plan, 那么命中率有可能降低.