批量插入的预处理语句的执行计划和执行计划缓存

如果tidb的执行计划缓存中不存放和校验参数值的话,应该次次都可以用同一个缓存? –是的
如果在缓存中存有执行时的参数绑定的话,那对于批量插入语句是不就是必然难以使用执行计划缓存? –很难,因为你每次prepare的stmt都不一样了,因为你prepare时就把stmt搞成不同的了(带了参数值),所以会频繁的在执行计划中淘汰导致可能出现OOM。
而且insert语句的执行计划中会包含啥信息呢,它也不像查询类语句那样有不同路径 –执行时候并不会包含太多信息所以在plancache中保留的执行计划信息是很简单的,最大保存的对象其实就是stmtid产生的语法树结构(里面有大量的values值)占用的较多内存。 这个我记得在某一个版本之后对于insert语句改成了直接忽略plancache了,不过我忘记在哪个版本了,可以查询issue。另外,对于简单的insert into语句可以进入planche效果还是很好的,因为直接免去了硬解析,很大程度上减少cpu的耗时。