SQL优化最佳实践:构建高效率Oracle数据库的方法与技巧 - (EPUB全文下载)
文件大小:0.48 mb。
文件格式:epub 格式。
书籍内容:
SQL优化最佳实践:构建高效率Oracle数据库的方法与技巧
第0章 引言
第1章 与SQL优化相关的几个案例
案例2 糟糕的结构设计带来的问题
案例3 规范SQL写法好处多
案例4 “月底难过”
案例5 COUNT(*)到底能有多快
案例6 “抽丝剥茧”找出问题所在
第二篇 原理篇
第2章 优化器与成本
2.1 优化器
2.2 成本
第3章 执行计划
3.1 概述
3.2 解读执行计划
3.3 执行计划操作
第4章 统计信息
4.1 统计信息分类
4.2 统计信息操作
第5章 SQL解析与游标
5.1 解析步骤
5.2 解析过程
5.3 游标示例
第6章 绑定变量
6.1 使用方法
6.2 绑定变量与解析
6.3 游标共享
第7章 SQL优化相关对象
7.1 表
7.2 字段
7.3 索引
7.4 视图
7.5 函数
7.6 数据链(DB_LINK)
第8章 SQL优化相关存储结构
8.1 表空间
8.2 段
8.3 区
8.4 块
第9章 特有SQL
9.1 MERGE
9.2 INSERT ALL
9.3 WITH
9.4 CONNECT BY/START WITH
第三篇 实战篇
第10章 查询转换
10.1 查询转换的分类及说明
10.2 查询转换——子查询类
10.3 查询转换——视图类
10.4 查询转换——谓词类
10.5 查询转换——消除类
10.6 查询转换——其他
第11章 访问路径
11.1 表访问路径
11.2 B树索引访问路径
11.3 位图索引访问路径
11.4 其他访问路径
第12章 表间关联
12.1 关联关系
12.2 表关联实现方法
12.3 嵌套循环连接
12.4 排序合并连接
12.5 哈希连接
12.6 其他连接方式
第13章 半连接与反连接
13.1 半连接
13.2 反连接
第14章 排序
14.1 引发排序的操作
14.2 避免和减少排序
14.3 排序过程及内存使用
14.4 执行计划中的“Sort”
第15章 子查询
15.1 处理方式
15.2 子查询分类
15.3 子查询优化
15.4 子查询特殊问题
第16章 并行
16.1 并行操作
16.2 并行级别
16.3 并行原理
附录A 常用技巧
附录B SQL优化参数
附录C SQL优化数据字典
附录D SQL优化等待事件
附录E SQL优化提示
第0章 引言
笔者早年间从事了多年开发工作,后因个人兴趣转做数据库。在长期的工作实践中,看到了数据库工作(特别是SQL优化)面临的种种问题,同时也发现人们在对数据库优化的认识上存在一些误区。
1.面临的问题
·没有专职人员:在很多公司或者说绝大多数公司,没有独立的数据库团队。往往由开发人员完成部分DBA的职责,包括结构设计、SQL优化甚至部分运维工作。受限于自身的精力,开发人员很难做到专业化。
·“赶工期”现象:在项目驱动的公司,经常出现赶工期的现象,而且往往牺牲的就是数据库的设计、评测、优化的时间。常常只是开发完毕后就匆忙上线,直到在线上运行出现问题后才会回头进行处理。但这时往往已经造成了很大的损失。
·话语权不大:数据库团队在公司中或者在项目中,往往话语权不高。在很多产品、项目决策过程中,常常会忽略DBA的声音。
·需求不明:很多项目在设计初期,往往对业务描述很详尽,但对数据库却只字未提。相关数据库的存储量、访问特征、高峰时间的TPS及QPS等往往只有到上线后才有比较清晰的认识。其后果就是往往需要大量优化工作,甚至导致需要对底层架构进行修改,这样最终会导致成本大大提高,有时增加的成本甚至是不可接受的。
·重运维、不重架构设计:有些公司认识到数据库的重要性,但往往只重视运维而忽视了前期的架构设计、开发优化等问题。系统上线后暴露出问题后,只能采取事后补救措施,但这往往会带来高昂的成本。
·盲目优化:有些公司确实很重视SQL优化工作,但又缺乏必要的技术投入。经常见到这样的开发规范——所有WHERE条件字段都必须加上索引。其结果就是数据库被“过分”优化,适得其反。
2.常见误区
·关系数据库已死:近些年来,随着NoSQL的蓬勃发展,有一种观点也逐渐盛行——关系数据库必将死亡,NoSQL将取而代之!随之而来的就是SQL优化没有必要,不必在其上再花费很大力气。NoSQL作为一种新兴的技术,的确有其鲜明的特点,也适用于一些场合。但我们要看到,很多需要ACID的场景下,传统数据库仍然是不二选择,不可取代。
·“SQL优化”很简单:有些人认为,SQL优化很简单,甚至碰到过这种观点——SQL优化不就是加几个索引嘛,有啥难的!其带来的直接后果就是,不重视这部分工作。笔者也确实在某业务系统(OLTP)中,观察到单表存在30多个索引的情况。也遇到过,因为索引过多导致执行性能出现问题的情况。这种情况,往往只有在血淋淋的事故后,才能引起领导的重视。
·硬件技术发展很快,不用再计较SQL优化:确实,硬件技术近些年来发展迅速,特别是以多核CPU为代表的并行处理技术和以SSD为代表的存储技术。这些新技术的使用,使得服务器的处理能力有了极大的提升。但我们清醒地看到,SQL优化才是问题的根本解决之道。我们后面可以看到一条SQL语句,可以轻易跑死一个数据库。这不是简单地通过硬件升级就可以解决的问题。
·SQL优化只是DBA的事情:在很多设计、开发、测试人员的眼中,SQL优化只是DBA的事情,他们不需要去关心。落实到具体工作中,相关人员就缺乏相应的优化意识,只注重自身功能的实现而忽略了相应的执行成本。最终的结果往往就是代码质量不高,上线后问题过多。
·数据仓库都使用Hadoop,不用传统关系型数据库了:Hadoop作为一种新兴技术,被越来越多地用在数据分析领域。很多国内外的大型公司,都采用了这个解决方案。但我们清醒地看到,它的定位更倾向于是一种“离线数据分析平台”,而不是“分布式数据库”。其时效性、准确性等难以满足特性需求。现在有很多公司在Hadoop上面做了类似“SQL引擎”的东西,就是仿照关系 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » SQL优化最佳实践:构建高效率Oracle数据库的方法与技巧 - (EPUB全文下载)