SQL优化冰与火-梁敬彬.pdf

上传人:哈尼dd 文档编号:3331059 上传时间:2019-08-13 格式:PDF 页数:54 大小:4.99MB
返回 下载 相关 举报
SQL优化冰与火-梁敬彬.pdf_第1页
第1页 / 共54页
SQL优化冰与火-梁敬彬.pdf_第2页
第2页 / 共54页
SQL优化冰与火-梁敬彬.pdf_第3页
第3页 / 共54页
SQL优化冰与火-梁敬彬.pdf_第4页
第4页 / 共54页
SQL优化冰与火-梁敬彬.pdf_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《SQL优化冰与火-梁敬彬.pdf》由会员分享,可在线阅读,更多相关《SQL优化冰与火-梁敬彬.pdf(54页珍藏版)》请在三一文库上搜索。

1、SQL优化优化冰冰与与火火 About me 梁敬彬: 福富研究院副理事长、福富福富研究院副理事长、福富软件特级专家软件特级专家 SQL优化冰与火 像冰一样冷静像冰一样冷静 (形成解决问题的一(形成解决问题的一 般思路,方法论)般思路,方法论) 像火一样热情像火一样热情 (学习融汇贯穿各种(学习融汇贯穿各种 技术至少深入理解业技术至少深入理解业 务场景)务场景) SQL优化的前提条件之前奏优化的前提条件之前奏 运行的规律是什么有多重要?运行的规律是什么有多重要? 说清楚! 太重要了,总结就是三个字:太重要了,总结就是三个字: 这有啥 想法呢? 毫无毫无PS痕迹!痕迹! 提升的空间有多大?提升的

2、空间有多大? 不过,这个例子其 实有点特殊哦,这 里还是有很多故事 的,这个故事在后 面慢慢和大家说。 提升的空间有多大?提升的空间有多大? SQL优化的前提条件之节奏(整体入手)优化的前提条件之节奏(整体入手) 死锁死锁 死锁死锁 死锁对应的死锁对应的TRC 索引失效索引失效 表空间不足表空间不足 ORA-00600 ORA-00600对应的对应的TRC 版本版本及关闭启动及关闭启动 SQL优化的前提条件之节奏(局部入手)优化的前提条件之节奏(局部入手) 识别识别执行计划的好坏执行计划的好坏 T=C / V (T=响应时间,C=开销,V=吞吐量,N=次数,W=外因阻碍) =(N * C)/

3、V =N * (C_单次单次+W)/(V_硬件硬件+V_应用应用) 注释:你想要执行时间快快的,那你得考虑这些方案:执行次数能少则少*(单次 访问路径能短就短+各种等待能没就没)/(硬件吞吐量能棒则棒+应用吞吐量能大 则大)。这样你就保证了开销小吞吐量大的原则,你就赢了。 注释:开销要少,吞吐量要大 注释:开销要少(分解为单次开销和执行次数),吞吐量要大 接下来,具体解决问题的思接下来,具体解决问题的思 路就横空出世了!路就横空出世了! SQL优化具体解决之响应时间分析优化具体解决之响应时间分析(减少开销减少开销) 具体解决之减少具体解决之减少开销的不改写开销的不改写SQL 具体解决之减少具体

4、解决之减少开销开销的改写的改写SQL(普通普通) 举个举个CASE WHEN优化表访问次数的案例优化表访问次数的案例1 举个举个CASE WHEN优化表访问次数的案例优化表访问次数的案例2 举举个个rowid减少开销减少访问路径的例子减少开销减少访问路径的例子 举个举个Rownum 和表连接相关的例子和表连接相关的例子 设计上的反范式设计上的反范式(表结构表结构+SQL改造的经典案例)改造的经典案例) 接下来接下来 代码改造方案(就增加一个条件)代码改造方案(就增加一个条件) 1. 新增加staff_event_his表一个时间列字段,state_date; 2. 根据event_q_his和

5、staff_event_his的关联,更新state_date字段的值; 3. 将staff_event_his和event_q_his分别改造为以时间列state_date为分区的分区表; 4. 在staff_id和state_date列建联合索引; 5. 将原代码改造为对staff_event_his增加state_date条件的写法,具体如下图: 表设计改造方案表设计改造方案 其他例子(减少开销就是是硬道理)其他例子(减少开销就是是硬道理)I: 其他其他例子例子II: 具体解决之减少开销的改写具体解决之减少开销的改写SQL(高级高级) 开始说开始说 “高级高级“SQL了,别激动了,别激动

6、 随便举个随便举个ROLLUP的例子的例子 手术前 手术后 随便举个随便举个WITH的例子的例子 随便举个随便举个MERGE的例子的例子 你也可以考虑用过程来实现,不过性能肯定一般般了。 SQL优化具体解决之响应时间分析优化具体解决之响应时间分析(增大吞吐量增大吞吐量) 太太多内容了,加大吞吐量,就说说多内容了,加大吞吐量,就说说PLSQL的例子吧的例子吧 需求描述 1 确定部门里的员工弄的平均工资 2. 如果员工的工资与平均工资差别在20%以上,在 EMP_SAL_LOG表里新增一行,并且含偏差值 3. 如果工资在部门里最低,则在EMP_SAL_LOG表里标志出来。 写法写法1(最差)(最差

7、) 游标里每选一个员工就游标里每选一个员工就分别分别 做做一次平均值和最小值的判断,性能低下。一次平均值和最小值的判断,性能低下。 写法写法2(略好一点)(略好一点) 此次是将平均与最小合并在此次是将平均与最小合并在 一起取一起取了,虽然性能还是低下,但略有提升。了,虽然性能还是低下,但略有提升。 写法写法3(好多了)(好多了) 把把AVG和和MIN值值放放到数组中避免到数组中避免反复运算反复运算 写法写法4(最棒)(最棒) 用分析函数实现单条用分析函数实现单条SQL完成完成 写法写法3(好多了)(好多了) 把把AVG和和MIN值值放放到数组中避免到数组中避免反复运算反复运算 写法写法4(最棒)(最棒) 用分析函数实现单条用分析函数实现单条SQL完成完成 未游标合并的写法未游标合并的写法游标合并后的写法游标合并后的写法 SQL优化具体解决之减少解决问题优化具体解决之减少解决问题时间时间(数据库数据库信息信息) 略去。 SQL优化具体解决之减少解决问题优化具体解决之减少解决问题时间时间(执行执行计划相关计划相关) 快速获取快速获取SQL相关信息相关信息 SQL优化具体解决之可持续性优化具体解决之可持续性

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1