查询优化详解程序员
学习查询优化器不是我们的目的,而是通过它,我们掌握SQL Server是如何处理我们的SQL的,掌握执行计划,掌握为什么产生I/O问题,为什么CPU使用老高,为什么你的索引加了不起作用…数据库优化就是这样的:没有所谓的“绝对手段,一下子把性能搞上去,一切都是看情况而定”,都是通过不断的分析,抽丝剥解。不带头脑的优化,能好到那里去?
查询优化器的结果就是产生执行计划,执行计划就是一个树,这个树由很多的物理操作组成,而这些物理操作就定义了如何去存储设备中去获取数据。关键点在于:每步都是单独的一次I/O,但对于索引,由于经常使用,绝大多数都已经CACHE到内存中,所以第1步的I/O经常是逻辑I/O,即数据可以从内存中得到;但是对于第2步来说,如果表比较大,则其数据不可能全在内存中,则其I/O很有可能是物理I/O,这是一个机械操作,相对逻辑I/O来说,极其费时。
为 了不重复解析相同的SQL语句(因为解析操作比较费资源,会导致性能下降),在第一次解析之后,ORACLE将SQL语句及解析后得到的执行计划存放在 内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。
系列文章索引:
查询优化器内核剖析第一篇 查询优化器内核剖析第二篇:产生候选执行计划 执行计划成本估算 查询优化器内核剖析第三篇:查询的执行与计划的缓存 Hint提示 查询优化器内核剖析第四篇:从一个实例看执行计划查询优化器内核剖析第五篇:进一步的了解执行计划
查询优化器内核剖析第七篇:执行引擎之数据访问操作 Scan
CSDN
Oracle sql执行计划解析百度文库:
http://wenku.baidu.com/u/%E5%A4%A7%E6%B4%8B1983?from=wenku
道客巴巴
http://www.doc88.com/p-3157969512849.html
[精华] 通过分析SQL语句的执行计划优化SQL总结7年DBA工作经验心得:
1.查看执行计划确定重大消耗资源原因
2.针对消耗资源主要原因进行解决,一般情况有:
(1)有大表,数据量巨大。一、酌情考虑减小查询体量 二、恰当地建立索引。
(2)优化查询结构,unique、hash join等,最好将unique放到底层表再做join。
(3)优化查询方法,避免重复工作,寻找最直接有效的查询方式。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/7157.html
服务器部署程序员系统优化网站设置运维相关文章
- AI编程登上Science封面:AlphaCode打竞赛,三分之二赛题一遍过,成绩超过一半程序员
- 七夕来袭——属于程序员的浪漫
- Java程序员必备的11大IntelliJ插件
- Linux-命令-用户登录及日志查询详解程序员
- Linux-网卡配置-网络命令详解程序员
- linux下查看磁盘分区的uuid详解程序员
- centos6上调整lv逻辑卷详解程序员
- Fiddler(一)Fiddler介绍及应用场景详解程序员
- Centos6版本使用yum报错 Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfi Setting up Install Process No package gcc available. Error: Nothing to do详解程序员
- 关于Redis命令keys在性能方面的说明详解程序员
- linux shell脚本编程笔记(三): 三种引号的区别详解程序员
- git pre-push hook详解程序员
- Linux命令之chown详解程序员
- Linux命令之chmod详解程序员
- Linux命令之unzip详解程序员
- Linux中使用sed命令替换字符串小结详解程序员
- Shell脚本 | 性能测试之CPU占有率详解程序员
- Shell脚本监控Linux系统CPU使用率详解程序员
- Linux 安装node.js和npm教程详解程序员
- 最完美解决Nginx部署ThinkPHP项目的办法详解程序员
- PHP7 redis扩展安装详解程序员
- invalid derived query的解决办法详解程序员
- 公司如何对待员工的跳槽呢详解程序员
- 十大经典算法开始详解程序员
- CSDN、中国科学院自动化研究所承办的第三届中国人工智能大会详解程序员
- 你可能是 Rust 程序员的五个迹象