Oracle相同的一个SQL执行计划截然不同的解决方法
最近在项目中遇到了一个很奇怪的问题,有个结构稍微复杂点的SQL(left join了十几张表)在一个项目地A查询时两秒返回数据,但是相同的SQL部署在另外一个项目地B却花费90多秒,更奇怪的是项目地B的数据库服务器比A好很多,还有数据总行数也比项目地A的少一些,然而花费的时间却多了几十倍。这个时候我比较了一下两个项目地该条sql的执行计划,发现执行计划是截然不同的。
刚开始一直以为是SQL层面的问题,不断尝试优化对应的索引,经过优化后,项目地B还是需要花费40多秒,感觉SQL层面很难进行优化了,我已经尽力了,这时候就开始怀疑会不会是其他原因,如数据库安装问题,数据库配置信息pga、sga参数等。
最后,只能选择求助公司的DBA同事,经过DBA三个多小时的努力,终于找出问题所在:
对于执行计划中,在note部分如果有“cardinality feedback used for this statement”,表示使用了基数反馈(Cardinality Feedback)。基数反馈(Cardinality Feedback)是Oracle 11.2开始Oracle有了一种新的特性,Cardinality Feedback是一个优化器自动优化的过程,优化器会自动修正重复执行的查询的执行计划。对于一些复杂的查询,比如多字段条件,字符串范围比较,数据SKEW等等,以及缺乏统计信息,优化器可能不能够产生一个完全准确的基数估计, 如丢失或统计数据不准确,或复杂的谓词的基数估计。cardinality feedback 就是基于这一原因而产生的。_optimizer_use_feedback参数默认是TRUE,即开启Cardinality Feedback,FALSE为关闭Cardinality feedback。
解决方法:关闭oracle的一个参数,对于结构上不复杂的语句
alter system set "_optimizer_use_feedback"=false;
设置完后,重新执行SQL,一秒就查询出来了;接下来反复执行sql,发现执行时间恢复正常。
Oracle相同的一个SQL执行计划截然不同的解决方法相关推荐
- 一个SQL逻辑读异常的解决方法
P1A项目上线后,发现一个SQL的逻辑读相当高,这个SQL语句是一个很简单的分页语句,按照开发人员提供给我的SQL,我实际执行了一遍,逻辑读只有30左右,但是在awr报告中,平均逻辑读是300. 百思 ...
- stored outlines迁移成SQL执行计划基线
stored outline迁移 stored outline是对SQL语句的一组hint.hint指示优化器对SQL语句选择一个特定的执行计划.stored outline是一种遗留技术用于提供执行 ...
- oracle执行计划走索引类型,SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE :VAR,为什么执行计划不走索引?...
SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE :VAR,为什么执行计划不走索引? 中文社区 (MOSC) 数据库 (MOSC) 6 Replies Last update ...
- 资源放送丨《Oracle数据库SQL执行计划的取得和解析》PPT视频
前段时间,墨天轮邀请Oracle优化方面的资深专家 陈晓辉 老师分享了<Oracle数据库SQL执行计划的取得和解析>,在这里我们共享一下PPT和视频,供大家参考学习. Oracle优化资 ...
- oracle 重设基线,Oracle SQL执行计划基线总结(SQL Plan Baseline)
一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PRO ...
- oracle cpu基线,Oracle SQL执行计划基线总结(SQL Plan Baseline)
一.基础概念 Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTLINE(大纲)或者SQL PRO ...
- Oracle 查看 SQL执行计划
Oracle 查看 SQL执行计划 SQL性能分析 执行计划可以用来分析SQL的性能 一.查看执行计划的方法 1. 设置autotrace set autotrace off: 此为默认值,即关闭au ...
- oracle的sql执行计划语句,最权威Oracle获取SQL语句执行计划大全
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...
- Oracle中SQL调优(SQL TUNING)之最权威获取SQL执行计划大全
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...
- Oracle查看SQL执行计划的方式
Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: 1.通过sq ...
最新文章
- jQuery方法position()与offset()区别
- Spring Boot + Dataway :接口不用写,配配就出来?
- Android Canvas 绘图
- 盘点区块链的2018:技术与工具演进篇
- oracle 清理跟踪文件trc,trm
- 二叉查找树 java代码实现
- linux默认安装数据库密码是多少,Linux服务器上安装MySql数据库(默认安装,密码为空),首次使用需要修改密码(示例代码)...
- List vs IEnumerable vs IQueryable vs ICollection vs IDictionary
- 计算机二级c选择题怎么准备,马上计算机二级考试,你准备得怎么样了?
- 强烈推荐几个BAT大佬技术公众号~值得学习!
- [JAVA毕业设计]Web企业差旅在线管理系统源码获取和系统演示
- STM32 HAL库 时钟芯片RX8025T IIC的读写操作,入过的坑
- 操作系统--内存管理超详细整理!
- 转本计算机知识普及软件,江苏专转本新政策的解读
- vmware-vmx.exe无法结束进程
- 那么如何高效管理Linkedin账号
- 【无标题】汇编实验-学生成绩管理系统
- 手把手教你打造全宇宙最强 Firefox 浏览器
- 国嵌,够欠!---ARM在线教育误区
- CCNA 考试心得总结
热门文章
- deeplin显示安装空间不够_太实用了!这种冷门的显示器支架可帮了大忙了
- 数据集:各地区化妆品销量、人口数量和人均收入
- java 接收soap_2.技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化...
- 在执行某个行为时,其大脑是否产生了对应的稳定脑神经模式映射?如果存在稳定映射,是否能运用机器学习方法发现未知行为神经回路?
- 朴素贝叶斯算法优缺点
- IIS发布web网站
- button按钮的四种监听及实例
- ajax每次只加载3张图片,使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)...
- CS231n李飞飞计算机视觉 迁移学习之物体定位与检测上
- linux全局查找-find,locate,whereis,which,type区别