封面 -20
书名 -18
前言 -17
目录 -5
正文 -1
第一部分 基 础 -1
第1章 性能问题 1
1.1 需要为性能做规划吗
1.1.1 需求分析
1.1.2 分析和设计
1.1.3 编码和单元测试
1.1.4 集成和验收测试
1.2 什么是性能问题
1.2.1 系统监控
1.2.2 响应时间监控
1.2.3 强迫调优失调症
1.3 如何解决性能问题
1.3.1 业务角度与系统角度
1.3.2 把问题分类
1.3.3 解决问题
1.4 小结
第2章 关键概念 9
2.1 选择性和基数
2.2 游标的生命周期
2.3 解析的过程
2.3.1 共享游标
2.3.2 绑定变量
2.4 读写数据块
2.5 小结
第二部分 找出问题
第3章 找出性能问题 27
3.1 分而治之
3.2 分析路线图
3.3 性能测量与剖析分析
3.4 性能测量
3.4.1 应用程序代码
3.4.2 数据库调用
3.5 剖析应用程序代码
3.5.1 简明的性能剖析
3.5.2 细节化性能剖析
3.6 跟踪数据库调用
3.6.1 SQL跟踪
3.6.2 跟踪文件的结构
3.6.3 使用TRCSESS
3.6.4 剖析工具
3.6.5 使用TKPROF
3.6.6 使用TVD$XTAT
3.7 剖析PL/SQL代码
3.7.1 安装剖析工具
3.7.2 安装输出表
3.7.3 收集剖析数据
3.7.4 报告剖析数据
3.7.5 GUI方式
3.8 小结
第三部分 查询优化器 84
第4章 系统和对象统计信息 85
4.1 工具包dbms_stats简介
4.2 系统统计
4.2.1 数据字典
4.2.2 非工作量统计信息
4.2.3 工作量统计信息
4.2.4 对查询优化器的影响
4.3 对象统计信息
4.3.1 有哪些对象统计信息可用
4.3.2 收集对象统计信息
4.3.3 锁定对象统计信息
4.3.4 比较对象统计信息
4.3.5 删除对象统计信息
4.3.6 保持统计信息时效性的策略
4.4 通用服务
4.4.1 统计信息历史
4.4.2 创建和删除备份表
4.4.3 导出、导入、获取和设置操作
4.4.4 日志
4.5 小结
第5章 配置查询优化器 133
5.1 配置还是不配置
5.2 配置路线图
5.3 设置正确的参数
5.3.1 查询优化器参数
5.3.2 PGA管理
5.4 小结
第6章 执行计划 153
6.1 获取执行计划
6.1.1 SQL语句EXPLAIN PLAN
6.1.2 动态性能视图
6.1.3 AWR和Statspack
6.1.4 跟踪功能
6.1.5 dbms_xplan包
(08-01)心得:执行计划的,动态性能视图,AWR,跟踪功能,dbms_xplan包含有很多功能,不很多概念,不容易懂,抽空再读一遍
6.2 解释执行计划
6.2.1 父子关系
6.2.2 操作类型
6.2.3 单独型操作
6.2.4 非相关联合型操作
6.2.5 相关联合型操作
(08-01)问题:表连接的例子中,执行计划并不容易懂,表连接和条件判断怎么结合生效的呢?
6.2.6 分而治之
6.2.7 特殊的例子
6.3 识别低效的执行计划
(08-01)心得:仍未看懂,但觉得可以学习到知识
6.3.1 错误的评估
(08-12)心得:当评估E-row错了,跟A-row不接近时,无法使用适合的高效的执行计划
6.3.2 未识别约束
(08-12)问题:检验查询优化器是否正确识别SQL语句中的约束条件,例子中的执行计划能基本理解,但感觉例子还不够通俗和具体,因为它说了用SQL概要可以解决未识别约束的问题,但又没说怎么解决,呵呵
6.4 小结
第7章 SQL优化技术 193
7.1 改变访问结构
(08-05)
7.1.1 运行机制
7.1.2 何时使用
7.1.3 缺陷和谬误
7.2 修改SQL语句
7.2.1 运行机制
7.2.2 何时使用
7.2.3 缺陷和谬误
7.3 提示
7.3.1 运行机制
7.3.2 何时使用
7.3.3 缺陷和谬误
7.4 改变执行环境
7.4.1 工作机制
7.4.2 何时使用
7.4.3 缺陷和谬误
7.5 SQL概要
问题:了解定义,但不了解工作原理和用法
7.5.1 工作机制
7.5.2 何时使用
7.5.3 缺陷和谬误
7.6 存储提纲
问题:了解定义,但不了解工作原理和用法
7.6.1 工作机制
7.6.2 何时使用
7.6.3 缺陷和谬误
7.7 SQL计划基线
问题:了解定义,但不了解工作原理和用法
7.7.1 工作机制
7.7.2 何时使用
7.7.3 缺陷和谬误
7.8 小结
第四部分 优化器 242
第8章 解析 243
8.1 识别解析问题
8.1.1 快速解析
8.1.2 长解析
8.2 解决解析问题
8.2.1 快速解析
8.2.2 长解析
8.3 应对解析问题
8.3.1 游标共享
8.3.2 服务器端语句缓存
8.4 使用应用编程接口
8.4.1 PL/SQL
8.4.2 OCI
8.4.3 JDBC
8.4.4 ODP.NET
8.5 小结
第9章 优化数据访问 268
问题:大体了解了每个小节的定义,但每个小节的技术点没看懂
9.1 找出不理想的访问路径
9.1.1 识别
9.1.2 陷阱
9.1.3 原因
9.1.4 解决办法
9.2 具有弱选择性的SQL语句
9.2.1 全表扫描
9.2.2 全分区扫描
9.2.3 范围分区
9.2.4 哈希与列表分区
9.2.5 组合分区
9.2.6 设计考虑
9.2.7 全索引扫描
9.3 具有强选择性的SQL语句
9.3.1 rowid访问
9.3.2 索引访问
9.3.3 单表哈希聚簇访问
9.4 小结
第10章 表连接优化 325
10.1 定义
10.1.1 连接树
(08-05)心得:内容讲得细致,通俗易懂
10.1.2 连接的类型
10.1.3 限制条件与连接条件
(08-06)心得:连接条件与限制条件基本了解了定义与区别
10.2 嵌套循环连接
10.2.1 概念
10.2.2 两表连接
10.2.3 四表连接
10.2.4 块预取
10.2.5 其他可选的执行计划
(08-06)小结:嵌套循环连接是“外循环+内循环”的原来,但是第5节中---其他可选的执行计划,似乎暗示:表1先连接表2的索引表,然后通过表2索引读取表2数据,返回结果,看来这样性能会更好!
10.3 合并连接
(08-07)小结:理解了定义,但未理解工作原理与工作区的作用
10.3.1 概念
10.3.2 两表连接
10.3.3 四表连接
(08-08)问题:两表与四表连接时,先按照连接字段排序,然后再连接,有点含糊,理解的不够细?
10.3.4 工作区
(08-08)问题:磁盘排序的原理图仍未看懂,值得研究
10.4 哈希连接
(08-09)原理:建立一张哈希表,将第一个表的记录哈希到一个位置,第二个表根据连接字段从哈希表寻找匹配,找到就返回记录
10.4.1 概念
10.4.2 两表连接
10.4.3 四表连接
(08-09)问题:左深树同一时间最多两个活动区,怎么推算出来的,先记住这个特性
问题2:这些连接方式,书上还没说应该在什么场景下使用,这个必须了解才行
10.4.4 工作区
10.4.5 索引连接
10.5 外连接
10.6 选择连接方法
10.6.1 FIRST_ROWS优化目标
(08-09)问题:first_rows返回第一条数据,最适合选择嵌套连接,为什么?
10.6.2 ALL_ROWS优化目标
10.6.3 支持的连接方法
10.6.4 并行连接
10.7 分区智能连接
10.7.1 完全分区智能连接
(08-09)心得:两个表按照连接字段对等分区,数据库可使用完全智能分区连接优化
10.7.2 部分智能分区连接
(08-09)心得:当一个表分区,另一个表未分区,根据第一个表的分区数n,开启n个线程并行连接第二个表,这就是部分只能分区连接
10.8 转换
10.8.1 连接去除
10.8.2 外连接转换为内连接
10.8.3 子查询非嵌套化
10.8.4 星形转换
(08-11)心得:
a.星形转换是多表连接,但是为什么要星形转换呢
b.关于星型转换的2个执行计划,都不没怎么细看,需要花时间再看一次
10.9 小结
第11章 高级优化技术 365
11.1 物化视图
11.1.1 运行机制
11.1.2 何时使用
11.1.3 缺陷与谬误
11.2 结果缓存
11.2.1 运行机制
11.2.2 何时使用
11.2.3 缺陷与谬误
11.3 并行处理
11.3.1 运行机制
11.3.2 何时使用
11.3.3 缺陷与谬误
11.4 直接路径插入
11.4.1 运行机制
11.4.2 何时使用
11.4.3 缺陷与谬误
11.5 行预取
11.5.1 运行机制
11.5.2 何时使用
11.5.3 缺陷与谬误
11.6 数组接口
11.6.1 运行机制
11.6.2 何时使用
11.6.3 缺陷与谬误
11.7 小结
第12章 优化物理设计 423
12.1 最佳字段顺序
12.2 最优数据类型
12.2.1 数据类型选择方面的陷阱
12.2.2 选择数据类型的最佳实践
12.3 行迁移与行链接
12.3.1 迁移与链接
12.3.2 问题描述
12.3.3 找出问题
12.3.4 解决方案
12.4 数据块争用
12.4.1 问题描述
12.4.2 找出问题
12.4.3 解决方案
12.5 数据压缩
第五部分 附 录 442
附录A 可下载文件 443