书海网短评:
适读人群:本书适用于所有关系数据库相关从业人员,尤其是中高端技术人员。很多时候,核心模块的性能问题,很可能是数据库的问题。《高性能SQL调优精要与案例解析》基础篇讲解了SQL调优的理论基础,实践篇通过10个实际案例,
很多时候,核心模块的性能问题,很可能是数据库的问题。《高性能SQL调优精要与案例解析》基础篇讲解了SQL调优的理论基础,实践篇通过10个实际案例,介绍了遇到性能问题时,SQL调优的分析思路、方法、步骤以及调优后的效果。很多时候,核心模块的性能问题,很可能是数据库的问题。《高性能SQL调优精要与案例解析》基础篇讲解了SQL调优的理论基础,实践篇通过10个实际案例,介绍了遇到性能问题时,SQL调优的分析思路、方法、步骤以及调优后的效果。
《高性能SQL调优精要与案例解析》共分为两篇,基础篇(第1章~第10章)介绍了SQL调优应该具备和掌握的理论和方法,实践篇(第11章)精选并深入解析了10个现实中的实际案例。
《高性能SQL调优精要与案例解析》前3章主要介绍了Oracle数据库架构设计及实现方面的内容。第4章详细讲解了Oracle各种数据库对象的相关实现、特性和理解。第5章介绍了事务及Oracle事务相关的特性。第6~8章详细讲解了执行计划及其相关因素、方法和元素。第9~10章分别讲解了如何通过分析SQL语句执行计划来确定其性能瓶颈,进而解决相关问题的思路和方法。第11章以精选的10个现实中的实际案例为样本,并对其逐一进行了理论结合实践的深入讲解和剖析,以期通过实际案例的解析,达到读者对基础理论进行验证、再学习的目的。
《高性能SQL调优精要与案例解析》适用于所有关系数据库相关从业人员,尤其是中高端技术人员。
闫书清,网名:兰花岛主_北京(lhdz_bj),20世纪90年代初大学毕业至今,一直默默深耕于数据库领域,擅长数据库优化、数据库分析诊断、数据库规划设计等。曾供职于能源、金融、电信等多个行业,任多家大型企业首席DBA及数据库架构师等职位。
基础篇
第1章整体架构2
1.1实例2
1.2数据库3
1.3整体架构图解5
第2章内存架构7
2.1系统全局区7
2.1.1共享池7
2.1.2数据缓冲8
2.1.3重做日志缓冲8
2.1.4系统全局区相关信息9
2.2程序全局区9
2.2.1会话区9
2.2.2SQL工作区10
2.2.3程序全局区的相关信息10
第3章存储架构11
3.1块11
3.2区间13
3.3段14
3.4表空间14
第4章对象类型17
4.1表17
4.1.1表的概念17
4.1.2表的注解17
4.1.3表与段18
4.1.4表分区19
4.2索引21
4.2.1索引的概念21
4.2.2索引的注解21
4.2.3本地索引和全局索引24
4.2.4B*Tree索引组织结构25
4.2.5位图索引26
4.3簇27
4.3.1簇的概念27
4.3.2簇注的解27
4.4视图27
4.4.1视图的概念27
4.4.2视图的注解28
4.5物化视图28
4.5.1物化视图的概念28
4.5.2物化视图的注解28
4.6同义词29
4.6.1同义词的概念29
4.6.2同义词的注解29
4.7序列30
4.7.1序列的概念30
4.7.2序列的注解30
4.8索引组织表30
4.8.1索引组织表的概念30
4.8.2索引组织表的注解31
4.9过程和函数31
4.9.1过程和函数的概念31
4.9.2过程和函数的注解32
4.10触发器32
4.10.1触发器的概念32
4.10.2触发器的注解33
4.11包33
4.11.1包的概念33
4.11.2包注解33
4.12约束34
4.12.1约束的概念34
4.12.2约束的注解34
第5章事务35
5.1事务的概念35
5.2事务的特性36
5.3ANSI/ISOSQL标准定义的事务隔离级别36
5.4Oracle支持的事务隔离级别36
5.5事务的开始和结束37
5.6事务的相关信息37
第6章执行计划39
6.1执行计划的概念39
6.2系统统计数据40
6.3对象统计数据41
6.4扩展统计数据42
6.4.1扩展统计数据的概念42
6.4.2扩展统计数据的限制42
6.5执行计划的获取方法42
6.5.1GUI工具43
6.5.2autotrace的功能45
6.5.3DBMS_XPLAN包47
6.5.4SQL查询方法55
6.5.5跟踪方法56
6.6执行计划阅读及分析方法58
第7章执行计划操作与分析59
7.1表相关操作59
7.2索引相关操作65
7.3物化视图相关操作72
7.4连接相关操作75
7.5分区相关操作91
7.6并行相关操作98
7.6.1并行相关的概念98
7.6.2并行相关操作示例100
7.7排序相关操作111
7.8视图相关操作116
7.9集合相关操作118
7.10位图相关操作121
7.11聚合相关操作126
7.12分析函数相关操作127
7.13层级相关操作130
7.14DDL及DML相关操作134
7.15其他相关操作142
第8章调优相关数据项150
8.1执行计划数据项150
8.2性能统计信息数据项151
第9章确定瓶颈153
9.1分析Cost方法153
9.1.1方法说明153
9.1.2分析要点153
9.1.3方法优势154
9.1.4方法劣势154
9.2分析Trace结果方法154
9.2.1方法说明154
9.2.2分析要点157
9.2.3方法优势157
9.2.4方法劣势157
9.3目测分析方法157
9.3.1方法说明157
9.3.2分析要点158
9.3.3方法优势158
9.3.4方法劣势158
第10章解决问题159
10.1合理使用索引159
10.1.1索引应用的一般原则161
10.1.2索引应用的认识误区162
10.2合理使用表分区163
10.2.1合理选择表分区类型163
10.2.2合理选择索引类型164
10.3收集和维护统计数据164
10.3.1自动收集统计数据164
10.3.2手动收集和维护统计数据166
10.3.3收集和维护扩展统计数据169
10.4SQL语句改写170
10.4.1消除视图170
10.4.2标量子查询改为外连接172
10.4.3update改为mergeinto173
10.4.4正确使用分析函数175
10.4.5withas去除多次扫描176
10.4.6union改为or178
10.4.7or改为union179
10.4.8in改为join181
10.4.9in改为exists182
10.4.10notin改为notexists183
10.4.11notexists改为notin184
10.4.12exists改为join185
10.4.13notexists改为join187
10.4.14join改为exists188
10.4.15join改为notexists189
10.4.16改写为集合运算符190
10.5正确使用Hint191
10.5.1Hint的概念及场景191
10.5.2Hint的具体语法192
10.5.3常用Hint193
10.6数据库开发常识220
10.6.1判断SQL性能的标准220
10.6.2索引相关误区220
10.6.3慎用多视图连接222
10.6.4慎用循环Delete222
10.6.5考量绑定变量的应用223
10.6.6减少参与连接的表数223
10.6.7慎用触发器223
10.6.8慎用临时表224
10.6.9表连接写法选择和排序225
实践篇
第11章案例解析228
11.1案例一228
11.1.1问题背景228
11.1.2问题描述229
11.1.3问题分析及解决230
11.1.4优化效果233
11.2案例二235
11.2.1问题背景235
11.2.2问题描述235
11.2.3问题分析及解决237
11.2.4优化效果241
11.3案例三242
11.3.1问题背景242
11.3.2问题描述244
11.3.3问题分析及解决245
11.3.4优化效果247
11.4案例四248
11.4.1问题背景248
11.4.2问题描述249
11.4.3问题分析及解决251
11.4.4优化效果254
11.5案例五255
11.5.1问题背景255
11.5.2问题描述255
11.5.3问题分析及解决256
11.5.4优化效果258
11.6案例六259
11.6.1问题背景259
11.6.2问题描述259
11.6.3问题分析及解决262
11.6.4优化效果266
11.7案例七267
11.7.1问题背景267
11.7.2问题描述268
11.7.3问题分析及解决271
11.7.4优化效果274
11.8案例八277
11.8.1问题背景277
11.8.2问题描述277
11.8.3问题分析及解决281
11.9案例九282
11.9.1问题背景282
11.9.2问题描述286
11.9.3问题分析及解决288
11.9.4优化效果289
11.10案例十290
11.10.1问题背景290
11.10.2问题描述291
11.10.3问题分析及解决292
11.10.4优化效果295
在当今信息时代,各行业的数据均呈爆炸式增长,这不仅为我们认识和掌握规律,进而推动整个社会发展提供了更多依据、途径和动力,同时对我们提出了更高的目标和要求。因为,面对如此海量数据,我们除了要科学地管理好它,更重要的是,要充分地利用好它,否则,这些将成为我们沉重的负担和累赘。那么,如何才能从这些海量数据中挖掘出蕴藏的巨大价值呢?
以Oracle为首的关系型数据库,历经几十年的高速发展,凭借其理论和技术上的优势,目前已为广大客户所垂青和依赖,并充斥于各行各业的每个角落。同时,关系型数据库也已成为海量数据的主要容器和工具,以至于,以Oracle为首的关系型数据库几乎成了数据的代名词。诚然,当今的数据库领域是个开放、多元的时代,各种数据产品和概念可谓百花齐放,但是,由于目前除关系型数据库外的其他产品都有其特定的场景和限制,因而在短时期内,关系型数据库在数据领域的重要地位依然难以被撼动和替代。
说到海量数据,大家自然会想到数据库优化,进而又必然会想到SQL调优,当然,除了SQL调优,数据库优化还涉及其他方面的诸多内容。实际上,针对海量数据和数据库优化,SQL调优占据着非常大的比重,通常也会带来非常明显的效果。现实情况中,一条存在性能问题的SQL语句,也许会拖垮整个系统;同时,一条SQL语句的完美优化,又可能使整个系统的问题瞬间灰飞烟灭。鉴于SQL调优的重要性,《高性能SQL调优精要与案例解析》将对其进行详细论述和深入解析。
目前,SQL调优方面的优秀书籍在国内市场并不多见,希望《高性能SQL调优精要与案例解析》能填补这个空白和缺憾。《高性能SQL调优精要与案例解析》开篇从基础入手,详细论述SQL调优所需具备的理论知识,以及对它们的深入、正确理解。《高性能SQL调优精要与案例解析》后半部分精选了10个实际案例作为样本,并结合前面的基础理论,对这些案例进行了详细、深入的剖析,以说明应用基础理论解决实际案例的思路、方法和步骤等。《高性能SQL调优精要与案例解析》既注重基础理论,又强调实践应用,通篇理论和实践浑然一体,相信会让各位读者有焕然一新、豁然开朗的感觉,同时,衷心希望各位读者能通过《高性能SQL调优精要与案例解析》多多受益。
《高性能SQL调优精要与案例解析》虽然基于Oracle关系型数据库创作与编写,但就理论和实践方面,对其他关系型数据库的SQL调优,依然具有很好的借鉴意义。另外,作者在《高性能SQL调优精要与案例解析》适当位置为读者留有疑问,且很多语句或命令中带有省略号“...”,初衷在于启发读者主动学习、研究和解决问题的动力和方法,同时为读者学习、思考和研究留有更大空间,从而达到授人以渔而非仅授人以鱼的效果。
作者结合多年来的学习、研究和实践经验,旨在努力打造一部SQL调优方面的经典之作,更希望其能成为读者学习航程上的一座灯塔。但限于时间等诸多因素,疏漏之处再所难免,欢迎各位读者批评指正。
最后,谨对多年来一直默默陪伴和支持我的家人及所有的老师、朋友,表示深深的感激和敬意!
特别值得提出的是,《高性能SQL调优精要与案例解析》的出版得到了电子工业出版社安娜等各位老师的大力支持和帮助,没有各位老师的耐心指导和辛勤付出,《高性能SQL调优精要与案例解析》不会在这么短时间内如此完美地展现在读者面前,在此,表示衷心的感谢和深深的敬意。









