(1)来自阿里、PingCAP、高校三个不同方向的三位作者强强联合,用时1年多,经过多次反复推敲修改,最终把20余年实战经验凝练再凝练后得到本书。
(2)本书内含100多个真实案例,以实战为主,以指导读者打造无错、稳定、快速运行的数据库为根本目的
(3)本书内容全面,从SQL优化、架构设计、开发规范、平台审核等多个角度展开,可以作为DBA日常工作中处理常见问题的备查手册。
SQL是*重要的关系数据库操作语言。SQL语句的运行效率,对于数据库的整体性能至关重要。因此,SQL语句的优化就成为数据库专业人员必须掌握的一门技能。很多初学者经常有如何入门、提高SQL语句优化能力的困惑。本书规避了市面上大多关于SQL优化的书籍内容过于深奥问题,以一线开发工程师的言语和视角展开,理论与实践并重,不仅适合初学者,也适合中端技术人员。
本书以大量案例为依托,系统讲解了SQL语句优化的原理、方法及技术要点,尤为注重实践,在章节中引入了大量的案例,便于学习者实践、测试,反复揣摩。
全书分为四篇:
引言篇,总结了实际工作中常见的问题,并通过真实案例让读者直观感受到SQL语句优化的重要。同时在每个案例后面,还针对案例出现的问题进行了总结;
原理篇,主要讲解了和SQL语句优化相关的基础知识及必要的一些操作,包括优化器、成本、执行计划、统计信息、语句解析、游标、绑定变量、数据对象等诸多方面;
优化篇,这是本书的重点,详细讲述了优化器对于SQL语句的多种处理方式,包括查询转换、数据对象访问方式、表关联、半/反连接、子查询、排序、并行等等。读者了解了这些方式,可以更好地理解优化器的行为,也就使优化更加有的放矢。这部分实战性极强,读者可以作为案头参考资料,随时查阅,反复实践;
实践篇,从数据设计开发规范、数据库画像、SQL优化方法论、AWR报告解读及数据库审核平台实践等几个角度全面讲解在实际工作中如何通过优化SQL,大幅度提高数据库的性能。
推荐序
前 言
第一部分 引入篇
第0章 引言2
第1章 与SQL优化相关的几个案例4
案例1 一条SQL引发的“血案”4
案例2 糟糕的结构设计带来的问题6
案例3 规范SQL写法好处多9
案例4 “月底难过”11
案例5 COUNT(*)到底能有多快13
案例6 “抽丝剥茧”找出问题所在17
第二部分 原理篇
第2章 优化器与成本22
21 优化器22
211 基于规则的优化器23
212 基于成本的优化器25
213 对比两种优化器26
214 优化器相关参数27
215 优化器相关Hint30
22 成本35
221 基本概念35
222 计算公式36
223 计算示例36
第3章 执行计划40
31 概述40
311 什么是执行计划40
312 库执行计划存储方式42
32 解读执行计划43
321 执行顺序43
322 访问路径45
33 执行计划操作45
331 查看执行计划45
332 固定执行计划72
333 修改执行计划80
第4章 统计信息84
41 统计信息分类84
411 系统统计信息84
412 对象统计信息87
413 数据字典统计信息109
414 内部对象统计信息109
42 统计信息操作109
421 系统统计信息110
422 对象统计信息111
423 数据字典统计信息115
424 内部对象统计信息115
第5章 SQL解析与游标116
51 解析步骤116
52 解析过程117
53 游标示例119
第6章 绑定变量122
61 使用方法122
62 绑定变量与解析124
63 游标共享129
第7章 SQL优化相关对象131
71 表131
72 字段137
73 索引140
74 视图148
75 函数149
76 数据链(DB_LINK)150
第8章 SQL优化相关存储结构153
81 表空间153
82 段154
83 区155
84 块156
第9章 特有SQL160
91 MERGE160
92 INSERT ALL162
93 WITH162
94 CONNECT BY /START WITH163
第三部分 SQL篇
第10章 查询转换166
101 查询转换的分类及说明166
102 查询转换—子查询类167
103 查询转换—视图类174
104 查询转换—谓词类178
105 查询转换—消除类180
106 查询转换—其他181
第11章 访问路径189
111 表访问路径189
1111 全表扫描189
1112 ROWID扫描193
1113 采样扫描194
112 B树索引访问路径195
113 位图索引访问路径205
114 其他访问路径210
第12章 表间关联215
121 关联关系215
122 表关联实现方法218
123 嵌套循环连接220
124 排序合并连接226
125 哈希连接232
126 其他连接方式238
第13章 半连接与反连接243
131 半连接243
132 反连接246
第14章 排序250
141 引发排序的操作250
142 避免和减少排序251
1421 优化原则及基本方法251
1422 避免排序的示例252
143 排序过程及内存使用255
144 执行计划中的“Sort”258
第15章 子查询262
151 处理方式262
152 子查询分类263
1521 按照语法分类263
1522 按照谓词分类263
1523 示例264
153 子查询优化266
154 子查询特殊问题272
1541 空值问题272
1542 OR问题274
1543 [NOT] IN/EXISTS问题275
第16章 并行276
161 并行操作276
1611 并行查询277
1612 并行DML280
1613 并行DDL283
162 并行级别286
163 并行原理286
1631 从属进程286
1632 粒度287
第四部分 实践篇
第17章 数据库设计开发规范292
171 Oracle结构设计规范292
1711 建模工具292
1712 命名规范294
1713 数据类型296
1714 表设计297
1715 字段设计299
1716 约束设计299
1717 索引设计300
1718 视图设计303
1719 包设计303
17110 范式与逆范式304
17111 其他设计问题305
172 Oracle开发规范306
1721 书写规范306
1722 编码规范307
1723 注释规范307
1724 语法规范308
173 MySQL结构设计规范312
1731 命名规则313
1732 使用原则314
1733 规模规则315
1734 字段规则315
1735 索引规则319
1736 字符集321
1737 逆范式设计321
174 MySQL开发规范322
1741 基本原则322
1742 语句规范322
第18章 架构设计之数据库承载力评估327
181 评估工作327
1811 建立性能基线327
1812 建立业务压力模型329
1813 模拟压力测试331
182 优化步骤331
第19章 数据库画像335
191 你了解你的数据库吗335
192 画像设计思路336
193 画像报告解读336
1931 概要信息336
1932 空间信息336
1933 对象信息337
1934 访问特征339
1935 资源消耗341
1936 SQL语句342
第20章 数据库审核平台实践:功能343
201 背景说明343
202 平台选型347
203 平台定位348
204 平台原理349
205 推进方法350
第21章 数据库审核平台实践:实现352
211 平台设计352
212 流程图354
213 数据结构355
214 主要模块356
2141 数据采集356
2142 规则解析358
2143 系统管理364
215 审核结果展示366
第22章 数据库审核平台实践:规则370
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录
有幸在dbaplus社群建立之初与韩锋老师相识,多年来韩老师一直孜孜不倦地分享他的技术见解与管理心得。如今,他将从业多年的数据库架构与SQL优化经验凝练于此书,实乃技术同仁之福。本书脉络清晰地讲解了SQL优化的方方面面,其核心优化思想从Oracle、MySQL辐射至其他关系型数据库,无论对于新手还是资深技术专家来说,都是一本不可多得、可以常备手边的优化指南。
——新炬网络董事/副总经理、dbaplus社群联合发起人 程永新
数据库性能的核心在于SQL,而SQL性能的核心在于优化器,Oracle和MySQL双剑合璧,韩锋老师再次挑战这一主题,将自己多年的经验融于一炉,为读者展开性能优化和SQL本源之门。而书中由实践提炼升华,于规范前置优化,于开发SQL审核,更加直达问题本心。
——云和恩墨创始人,ACOUG 主席 盖国强
非常荣幸与本书中的两位作者韩老师和高振娇共事多年,他们都有非常丰富的实战经验,在宜信帮助我们的研发团队解决了大大小小的数据库优化、SQL优化相关的诸多问题,在日常工作中他们给研发团队和DBA团队很多指导,并沉淀形成了规范,进一步还将其中的一部分最佳实践落地到了宜信的数据库审核产品中。非常欣喜地看到几位专家将职业生涯中多年积累的经验更为系统化地总结到了本书中,既有核心原理的讲解、又有具体案例的分享,是数据库领域不可多得的一部佳作,五星推荐!
——宜信科技中心基础研发部副总裁 孙熠青
当我们对什么才是世界上最好的编程语言争论不休时,极少提到SQL,事实上SQL一直在TIOBE榜上有名。多数开发、测试工程师都会用到数据库,要理解数据库系统原理和掌握SQL,不懂数据库,何以做系统?
数据库可称为工程师基本技能,以至于面试时候不会提及——那是DBA的本职工作。但是谁没啃过几本数据库的书呢?真没有?那么不如从这本啃起……
——公众号“IT民工闲话”作者 史海峰