第二章 风驰电掣——有效缩短SQL优化过程

参考《收获,不止SQL优化》作者: 梁敬彬 / 梁敬弘

如何缩短SQL优化的过程

注意:此处探讨的是缩短SQL优化的过程,而不是缩短SQL的执行时间

1、首先,需要清楚,SQL优化的过程是否有效缩短,是用什么指标来衡量?

从我们接到某个模块运行很慢的问题开始,从收到问题—>找出原因(获取信息+具体分析)—>着手优化—>验证通过,将这整个过程所花的时间作为一个衡量指标,我们需要考虑的是如何将这个指标值降低。
在这里插入图片描述

2、其次,我们来拆解这个指标

**【收到问题】**这一步,看似没必要讨论,但其实如果一开始收到问题时就附上全面而具体的信息,将会对优化过程有很大帮助。
以下问题(可做调整)可以整理成一份标准文档,报告人提交优化需求时,提前了解清楚这些问题并填写提交。(仅做参考和前期的判断,方便合理地安排任务和调整检查步骤,有些问题后面还是要亲自确认过。)
在这里插入图片描述

**【找出原因】**这一步,我们要做具体分析,肯定要了解一些信息。特别是无法远程访问的生产问题,开发测试环境无法复现,那这些信息的来回搜集,将会非常耗时。
所以获取信息这一步,最好能提前写好脚本并部署,需要时一键获取。
而具体分析这一步,主要取决于优化人员对SQL的了解和经验,暂不做分析。
在这里插入图片描述
ASH报告:可以看到那些长时间等待事件跟哪些SQL相关,可以看看,是否有我们需要优化的SQL,如果有的话,就可以看到具体原因(比如日志切换频繁可能是提交频繁,可以考虑批量提交;如果有并行度等待,查看对应的表上是否设置了并行度属性;等等)。

AWRSQ报告:可以分析某段时间内具体SQL的执行时间,频率,是否有不同的执行计划,对应的执行计划是什么,对SQL优化也有很帮助。

**【着手优化】**这一步,一般我们找出原因后,就可着手优化。这一步的处理时间,也要看具体的情况。
我们平时可以写好一些具体问题的处理步骤
在这里插入图片描述

解决到验证通过的时间,要看是可以直接改还是要打包升级,是随时可以处理还是要到凌晨业务不繁忙的时候处理。后两个过程的时间取决于工程师自身的技能经验和具体情况具体分析,先不做讨论。

书中所画的思维导图如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报告的获取 5 1.2.2 五大报告关注的要点 10 1.3 案例的分享与交流 18 1.3.1 和并行等待有关的案例 18 1.3.2 和热块竞争有关的案例 19 1.3.3 和日志等待有关的案例 20 1.3.4 新疆某系统的前台优化 20 1.3.5 浙江某系统的调优案例 21 1.4 本章总结延伸与习题 21 1.4.1 总结延伸 21 1.4.2 习题训练 23 第2章 风驰电掣——有效缩短SQL优化过程 24 2.1 SQL调优时间都去哪儿了 25 2.1.1 不善于批处理频频忙交互 25 2.1.2 无法抓住主要矛盾瞎折腾 25 2.1.3 未能明确需求目标白费劲 26 2.1.4 没有分析操作难度乱调优 26 2.2 如何缩短SQL调优时间 27 2.2.1 先获取有助调优的数据库整体信息 27 2.2.2 快速获取SQL运行台前信息 27 2.2.3 快速拿到SQL关联幕后信息 28 2.3 从案例看快速SQL调优 29 2.3.1 获取数据库整体的运行情况 29 2.3.2 获取SQL的各种详细信息 29 2.4 本章总结延伸与习题 32 2.4.1 总结延伸 32 2.4.2 习题训练 33 第3章 循规蹈矩——如何读懂SQL执行计划 34 3.1 执行计划分析概述 35 3.1.1 SQL执行计划是什么 35 3.1.2 统计信息用来做什么 36 3.1.3 数据库统计信息的收集 37 3.1.4 数据库的动态采样 37 3.1.5 获取执行计划的方法(6种武器) 40 3.2 读懂执行计划的关键 48 3.2.1 解释经典执行计划方法 49 3.2.2 总结说明 55 3.3 从案例辨别低效SQL 55 3.3.1 从执行计划读出效率 56 3.3.2 执行计划效率总结 60 3.4 本章习题、总结与延伸 60 第4章 运筹帷幄——左右SQL执行计划妙招 62 4.1 控制执行计划的方法综述 63 4.1.1 控制执行计划的意义 63 4.1.2 控制执行计划的思路 64 4.2 从案例探索其方法及意义 65 4.2.1 HINT的思路 65 4.2.2 非HINT方式的执行计划改变 72 4.2.3 执行计划的固定 100 4.3 本章习题、总结与延伸 102 第5章 且慢,感受体系结构让SQL飞 103 5.1 体系结构知识 104 5.1.1 组成 104 5.1.2 原理 104 5.1.3 体会 105 5.2 体系与SQL优化 106 5.2.1 与共享池相关 107 5.2.2 数据缓冲相关 111 5.2.3 日志归档相关 116 5.3 扩展优化案例 118 5.3.1 与共享池相关 118 5.3.2 数据缓冲相关 122 5.3.3 日志归档相关 126 5.4 本章习题、总结与延伸 130 第6章 且慢,体验逻辑结构让SQL飞 132 6.1 逻辑结构 132 6.2 体系细节与SQL优化 133 6.2.1 Block 133 6.2.2 Segment与extent 137 6.2.3 Tablespace 139 6.2.4 rowid 139 6.3 相关优化案例分析 140 6.3.1 块的相关案例 141 6.3.2 段的相关案例 144 6.3.3 表空间的案例 148 6.3.4 rowid 151 6.4 本章习题、总结与延伸 153 第7章 且慢,探寻表的设计让SQL飞 154 7.1 表设计 154 7.1.1 表的设计 155 7.1.2 其他补充 155 7.2 表设计与SQL优化 156 7.2.1 表的设计 156 7.2.2 其他补充 179 7.3 相关优化案例分析 184 7.3.1 分区表相关案例 185 7.3.2 全局临时表案例 190 7.3.3 监控异常的表设计 195 7.3.4 表设计优化相关案例总结 199 7.4 本章习题、总结与延伸 199 第8章 且慢,习索引如何让SQL飞 200 8.1 索引知识要点概述 201 8.1.1 索引结构的推理 201 8.1.2 索引特性的提炼 204 8.2 索引的SQL优化 206 8.2.1 经典三大特性 207 8.2.2 组合索引选用 217 8.2.3 索引扫描类型的分类与构造 219 8.3 索引相关优化案例 225 8.3.1 三大特性的相关案例 225 8.3.2 组合索引的经典案例 231 8.4 本章习题、总结与延伸 234 第9章 且慢,弄清索引之阻碍让SQL飞 23

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值