orlace培训(高级).ppt
《orlace培训(高级).ppt》由会员分享,可在线阅读,更多相关《orlace培训(高级).ppt(53页珍藏版)》请在三一文库上搜索。
1、2015年4月,SQL性能调优,我们为什么这么苦逼,经常听到的抱怨 系统很慢,业务跑不动了! 同样的数据量,怎么还没有我的笔记本跑的快! 测试系统上运行很快,怎么生产系统这么慢! 才做过优化,怎么又慢了! 咋搞的嘛,一会儿快一会儿慢,是不是系统有问题? ,我们为什么这么苦逼,根本原因 我们被拖上了关系型数据库这艘“贼船” 关系型数据库的特点 以关系代数为理论设计基础 逻辑简单,容易上手 结构灵活,易于调整,我们为什么这么苦逼,近十年关系数据库的显著变化 支持海量数据存储 优化器更“智能” 一切都交给它 它做的多了,需要我们考虑的就少了,问题也就来了!,SQL语句是如何被执行的,SQL语句是如何
2、被执行的,Evaluation fo expressons and conditions Statement transformation Choice of optimizer approaches Choice of access paths Choice of join orders Choice of join methods,SQL语句是如何被执行的,Access Paths RANK 1: Single Row by Rowid RANK 2: Single Row by Cluster Join RANK 3: Single Row by Hash Cluster Key wit
3、h Unique or Primary Key RANK 4: Single Row by Unique or Primary Key RANK 5: Clustered Join RANK 6: Hash Cluster Key RANK 7: Indexed Cluster Key RANK 8: Composite Index,SQL语句是如何被执行的,RANK 9: Single-Column Indexes RANK 10: Bounded Range Search on Indexed Columns RANK 11: Unbounded Range Search on Index
4、ed Columns RANK 12: Sort Merge Join RANK 13: MAX or MIN of Indexed Column RANK 14: ORDER BY on Indexed Column RANK 15: Full Table Scan,SQL语句是如何被执行的,Join Methods,优化器现在已经很智能,为什么还需要优化,其实,针对业务系统的数据应用,你比它了解的更多 它永远无法预测业务流程、业务场景的变化 它不会主动适应政策法规 在一定程度上,它只会按照我们的指令行事,影响优化器生成执行计划的要素,内在因素 表的结构定义 表的物理存储结构 数据量 数据操
5、作特性 数据分布特性,影响优化器生成执行计划的要素,外在因素 可用系统资源(静态) 系统工作负载(动态) 索引 统计信息 SQL语句的复杂程度,SQL语句的优化过程,定位有问题的语句 检查执行计划和统计信息 分析相关表的记录数、索引情况 改写SQL语句、使用HINT、调整索引、表分析 有些SQL语句不具备优化的可能,需要优化处理方式 达到最佳执行计划,SQL语句的优化规则,一个“好 SQL语句”的评价标准 第一:逻辑正确 (最基本的要求) 第二:语法清晰 (简单为王;便于知识转移、后期维护) 第三:时间响应快 (性能的基本要求) 第四:资源消耗少 (最高境界),SQL语句的优化规则,规范书写
6、大小写风格、注释、缩排规则等,SQL语句的优化规则,提高优化器使用索引的概率 避免对索引列进行计算 例: X WHERE sal * 1.1 950 O WHERE sal 950 / 1.1 X WHERE substr(name,1,7) = CAPITAL O WHERE name LIKE CAPITAL%,SQL语句的优化规则,提高优化器使用索引的概率 注意比较值与索引列数据类型的一致性 例: emp_no: NUMBER型 O WHERE emp_no = 123 (好) O WHERE emp_no = 123 (也可) emp_type:CHAR型 X WHERE emp_ty
7、pe = 123 (查询时不利用索引列) O WHERE emp_type = 123,SQL语句的优化规则,提高优化器使用索引的概率 尽量避免使用NULL 例: X WHERE comm IS NOT NULL X WHERE comm IS NULL O WHERE comm = 0,SQL语句的优化规则,提高优化器使用索引的概率 尽量避免使用NOT=和!= 例: X WHERE deptno != 0 O WHERE deptno 0,SQL语句的优化规则,提高优化器使用索引的概率 对于复合索引,必须使用主索引列 例:复合索引(deptno, job) O WHERE deptno =
8、20 AND job = MANAGER O WHERE deptno = 20 O WHERE job = MANAGER AND deptno = 20 X WHERE job = MANAGER,SQL语句的优化规则,提高优化器使用索引的概率 ORDER BY子句 例: O 子句中,列的顺序与索引列的顺序一致。 O 子句中,列应为非空列。,SQL语句的优化规则,使用表的别名来引用列 例: X SELECT abc002, abd003 FROM ab001, ab020 WHERE ab001.col2 = ab020.col3 O SELECT t1.abc002, t2.abd003
9、 FROM ab001 t1, ab020 t2 WHERE t1.col2 = t2.col3 ,SQL语句的优化规则,考虑用NOT EXISTS代替NOT IN 例: X SELECT FROM emp WHERE dept_no NOT IN ( SELECT dept_no FROM dept WHERE dept_cat = A); O SELECT FROM emp e WHERE NOT EXISTS ( SELECT X FROM dept WHERE dept_no = e.dept_no AND dept_cat = A );,SQL语句的优化规则,考虑用多表连接代替EXI
10、STS子句 例: X SELECT FROM emp e WHERE EXISTS ( SELECT X FROM dept WHERE dept_no = e.dept_no AND dept_cat = A ); O SELECT FROM emp e, dept d WHERE e.dept_no = d.dept_no AND d.dept_cat = A;,SQL语句的优化规则,少用DISTINCT,可考虑用EXISTS代替 例: X SELECT DISTINCT d.dept_code, d.dept_name FROM dept d, emp e WHERE e.dept_co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- orlace 培训 高级
链接地址:https://www.31doc.com/p-2146345.html