关于oracle数据库相同sql重复查询,第二次执行效率很低问题
问题描述: 工作中遇见了从一个现有数据库导出dmp文件复制一个新环境时,同一个sql第一次执行很快就能查询出结果,但是第二次执行的时候sql一直在跑,但是一直查不出结果。
问题排查: 经过多个数据库比对,以及使用PLSQL工具的执行计划分析发现,第一次的执行计划和第二次的执行计划不一致。
解决方案:
--查看参数
show parameter _optimizer_use_feedback
--关闭基数反馈
alter system set "_optimizer_use_feedback"=FALSE
概念描述: oracle存在一个机制 基数反馈(Cardinality Feedback )是 Oracle 11.2 中引入的关于 SQL 性能优化的新特性,该特性主要针对统计信息陈旧、无直方图或虽然有直方图但仍基数计算不准确的情况,Cardinality 基数的计算直接影响到后续的 JOIN COST 等重要的成本计算评估,造成 CBO 选择不当的执行计划。但是该参数存在不稳定因素,可能会带来执行效率的问题,建议关闭优化器反馈。
原文链接:https://blog.csdn.net/qq_30513477/article/details/115938484
文章引用:
站内大佬分析过程,我是一个搬运工