福富软件 梁敬彬 - SQL优化冰与火

祢一嘉

2018/05/13 发布于 技术 分类

有人就有江湖,有江湖就有IT系统,有IT系统就有数据库,有数据库就有SQL,SQL应用可一字概括:“广”。加之其简单易学,SQL实现也可一字概括:“乐”。 然而,SQL虽然实现简单可乐,却极易引发性能问题,那时广大SQL使用人员可要“愁”就一个字,心碎无数次了。 缘何有性能问题?原因也一字概括:“量”。当系统数据量、并发访问量上去后,不良SQL就会拖跨整个系统,我们甚至找不出哪些SQL影响了系统。即便找到也不知如何动手优化。此时的心情也可以一字概括:“懵”。

文字内容
1. SQL优化冰与火
2. About me 梁敬彬: 福富研究院副理事长、福富软件特级专家
3. SQL优化冰与火 像冰一样冷静 (形成解决问题的一 般思路,方法论) 像火一样热情 (学习融汇贯穿各种 技术至少深入理解业 务场景)
4. SQL优化的前提条件之前奏
6. 运行的规律是什么有多重要? 太重要了,总结就是三个字: 说清楚!
7. 提升的空间有多大? 这有啥 想法呢? 毫无PS痕迹!
8. 提升的空间有多大? 不过,这个例子其 实有点特殊哦,这 里还是有很多故事 的,这个故事在后 面慢慢和大家说。
9. SQL优化的前提条件之节奏(整体入手)
11. 死锁 死锁对应的TRC 死锁 索引失效
12. 表空间不足 ORA-00600 ORA-00600对应的TRC 版本及关闭启动
14. SQL优化的前提条件之节奏(局部入手)
16. 识别执行计划的好坏
18. T=C / V 注释:开销要少,吞吐量要大 =(N * C)/ V 注释:开销要少(分解为单次开销和执行次数),吞吐量要大 =N * (C_单次+W)/(V_硬件+V_应用) 注释:你想要执行时间快快的,那你得考虑这些方案:执行次数能少则少*(单次 访问路径能短就短+各种等待能没就没)/(硬件吞吐量能棒则棒+应用吞吐量能大 则大)。这样你就保证了开销小吞吐量大的原则,你就赢了。 (T=响应时间,C=开销,V=吞吐量,N=次数,W=外因阻碍) 接下来,具体解决问题的思 路就横空出世了!
19. SQL优化具体解决之响应时间分析(减少开销)
20. 具体解决之减少开销的不改写SQL
23. 具体解决之减少开销的改写SQL(普通)
24. 举个CASE WHEN优化表访问次数的案例1
25. 举个CASE WHEN优化表访问次数的案例2
26. 举个rowid减少开销减少访问路径的例子
27. 举个Rownum 和表连接相关的例子
28. 设计上的反范式(表结构+SQL改造的经典案例)
29. …..接下来
30. 表设计改造方案 1. 新增加staff_event_his表一个时间列字段,state_date; 2. 根据event_q_his和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条件的写法,具体如下图: 代码改造方案(就增加一个条件)
31. 其他例子(减少开销就是是硬道理)I:
32. 其他例子II:
33. 具体解决之减少开销的改写SQL(高级)
34. 随便举个ROLLUP的例子 开始说 “高级“SQL了,别激动……
35. 随便举个WITH的例子 手术前 手术后
36. 随便举个MERGE的例子 你也可以考虑用过程来实现,不过性能肯定一般般了。
37. SQL优化具体解决之响应时间分析(增大吞吐量)
39. 太多内容了,加大吞吐量,就说说PLSQL的例子吧 需求描述 1 确定部门里的员工弄的平均工资 2. 如果员工的工资与平均工资差别在20%以上,在 EMP_SAL_LOG表里新增一行,并且含偏差值 3. 如果工资在部门里最低,则在EMP_SAL_LOG表里标志出来。
40. 写法1(最差) 游标里每选一个员工就分别 做一次平均值和最小值的判断,性能低下。 写法2(略好一点) 此次是将平均与最小合并在 一起取了,虽然性能还是低下,但略有提升。
41. 写法3(好多了) 把AVG和MIN值放到数组中避免反复运算 写法4(最棒) 用分析函数实现单条SQL完成
42. 写法3(好多了) 把AVG和MIN值放到数组中避免反复运算 写法4(最棒) 用分析函数实现单条SQL完成
43. 未游标合并的写法 游标合并后的写法
44. SQL优化具体解决之减少解决问题时间(数据库信息)
47. 略去。。。。。。
48. SQL优化具体解决之减少解决问题时间(执行计划相关)
51. 快速获取SQL相关信息
52. SQL优化具体解决之可持续性