设为首页 收藏本站
查看: 489|回复: 0

[经验分享] 《Oracle高性能SQL调整》(转)

[复制链接]

尚未签到

发表于 2016-7-25 08:04:02 | 显示全部楼层 |阅读模式
  1,优化器模式:rule,all rows,fist row
  2,添加索引可能造成许多其他SQL语句执行计划的改变
  3,可以为SQL存储可以立即执行的执行计划(调整持久化)
  4,SQL调整目标:a 去掉不必要的大型表的全表扫描 b缓存小型表的全表扫描 c 检验优化索引的使用 d 检验优化的连接技术
  5,一些sql 监控语句:access.sql plan.sql access-report..sql get_sql
  6,大型表 块数远远大于200
  7,对小表进行缓存
  8,SQL中的四个步骤:解析,捆绑,执行和获取
  9,
Oracle 有两个优化目标:最大速度(针对 OLTP, 使用 first_rows )、最小的资源占用(针对批处理,使用 all_rows )
表的访问方式:全表扫描、散列访问、 ROWID 访问
ROWID 中包含了一条记录的数据块号和它在数据块中的偏移量。
索引的访问方式:索引范围扫描、单个索引扫描、降序索引范围扫描、 and-euqal 过滤器
连接操作:嵌套循环连接,散列连接,排序合并连接, STAR 查询连接, connect by 连接
排序合并连接和散列连接:更大的吞吐量、排序、快(针对大记录子集)、不需要索引
嵌套循环连接:更短的反映时间、不排序、慢(针对大记录子集)、需要索引
产生记录排序的 SQL:order by ,join,group by,aggregate,select unique,select distinct,create index;
基于成本的优化器:需要了解的数据包括表数据、记录的数目、物理数据块的数目、索引数据、索引中唯一值的数目、索引中值的分布、索引的可选性、索引簇因素
 
磁盘排序之所以昂贵是由于下面几个原因:1,他们同在内存中进行排序比较起来太慢;2 磁盘排序将消耗零时表空间的资源。
 
SQL执行的级别:SQL源代码
                                执行计划(合并排序,完全表访问,散列连接,嵌套循环连接)
                                表访问方式(全表访问(合并+完全),RowId(散列连接,嵌套循环连接))
 
  使用CTAS(create table as select),通过将记录的物理位置根据主键索引的顺序排序,这个方法将建筑地提高数据读取速度。这中方法只有在程序选择多条记录,使用索引范围扫描或者应用程序多次查询连续的主键时有用。
  
  将全表扫描替换为索引范围扫描总体方针如下:
  对于所有记录排序的表 40%
  对于未经排序的表 7%
  Oracle并行查询只适用于执行全表扫描的查询。
  
  在内存中为所有会话使用的排序空间必须相同
  
  如果表相对稳定,使用存储框架将会很大程度上提高SQL的性能,因为这样做将绕过SQL的解析过程。
  
  只要可能的话,在Oracle的SQL中无论何时都应该避免使用子查询,在某些情况下可以使用一个标准的连接操作来代替。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-248859-1-1.html 上篇帖子: 在oracle中实现自增功能 下篇帖子: ORACLE应用经验(5)-表空间[转载]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表