基于成本的oracle优化法则是世界级Oracle大师刘易斯Jonathan Lewis的最新力作,该书以专家的视角对Oracle系统的基于成本的优化模型进行了深入浅出的分析和介绍,通过学习本书,您将能够理解优化器的“思维”、知道错误是如何造成的以及导致错误的数据模式,从而可以节约在设计和SQL查错方面耗费的大量时间,能够帮助DBA成为更好的设计者,还能帮助开发人员开发出更卓越的代码。
内容介绍《基于成本的Oracle优化法则》数据库领域的超级畅销书,也是近几年来Oracle领域最重要的著作之一,荣获2006年度Oracle杂志编辑选择大奖:自该书出版以来,受到无数读者、网友和专家的好评,被翻译成多种语言,成为众多中高级Oracle用户、DBA和开发人员的必看图书。
本书一共14章,按照顺序涵盖了如下主题:
●表扫描:比较简单,作为入门,介绍了一些关于CPU成本计算的知识。
●简单选择率:只有一个表,但包含了大量的关于算法的知识。
●简单B树索引:单块读取和多块读取的区别。
●群集因子:这也许是索引中最关键的特性。
●更微妙的选择率:介绍一个基本主题上的大量微小变化。
●直方图:为什么需要直方图,并介绍了OLTP和DSS/DW之间的区别。
●位图索引:并不是所有的索引都是相同的。
●变换:看到的不一定是得到的。
●连接:用4整章的内容来介绍两个表之间的连接。
●10053 trace:演示性示例。
●升级问题:从本书其余部分整理的警告和注意信息的集合。
章节目录目 录
第1章 成本的含义1
1.1 优化器选项2
1.2 成本的定义3
1.3 变换和成本计算5
1.4 所见未必即所得8
1.5 本章小结8
1.6 测试用例8
第2章 表扫描9
2.1 入门10
2.2 提高14
2.2.1 块大小的影响14
2.2.2 CPU成本计算16
2.2.3 CPU成本计算的作用22
2.3 BCHR24
2.4 并行执行27
2.5 索引快速全扫描30
2.6 分区32
2.7 本章小结37
2.8 测试用例37
第3章 单表选择率39
3.1 入门40
3.2 空值42
3.3 使用列表43
3.4 区间谓词48
3.5 双谓词52
3.6 多谓词的相关问题54
3.7 本章小结56
3.8 测试用例57
第4章 简单B树访问59
4.1 索引成本计算的基础知识60
4.2 入门61
4.2.1 有效索引选择率63
4.2.2 有效表选择率64
4.2.3 clustering_factor65
4.2.4 综合计算67
4.2.5 扩展算法68
4.2.6 3个选择率74
4.3 CPU成本计算78
4.4 待处理的零碎问题80
4.5 本章小结81
4.6 测试用例81
第5章 群集因子83
5.1 基本示例84
5.1.1 减少表争用
(多个自由列表)86
5.1.2 减少叶块的争用(反转键
索引,ReverseKey Index)89
5.1.3 减少表的争用(ASSM)92
5.1.4 减少RAC中的争用
(自由列表群)95
5.2 列顺序96
5.3 额外的列99
5.4 校正统计信息101
5.4.1 sys_op_countchg()技术101
5.4.2 非正式策略105
5.5 待处理的零碎问题106
5.6 本章小结107
5.7 测试用例107
第6章 选择率的相关问题109
6.1 不同的数据类型110
6.1.1 日期类型110
6.1.2 字符类型110
6.1.3 愚蠢的数据类型112
6.2 前导零116
6.3 致命的默认值117
6.4 离散数据的风险119
6.5 令人惊奇的sysdate123
6.6 函数表示125
6.7 相互关联的列126
6.7.1 动态采样129
6.7.2 优化器配置文件132
6.8 传递闭包133
6.9 产生约束的谓词136
6.10 本章小结139
6.11 测试用例139
第7章 直方图141
7.1 入门142
7.2 普通直方图147
7.2.1 直方图和绑定变量147
7.2.2 Oracle何时忽略直方图149
7.3 频率直方图152
7.3.1 伪造频率直方图155
7.3.2 注意事项156
7.4 “高度均衡”直方图157
7.5 重新审视数据问题163
7.5.1 愚蠢的数据类型163
7.5.2 危险的默认值166
7.6 本章小结167
7.7 测试用例168
第8章 位图索引169
8.1 入门170
8.1.1 索引组件174
8.1.2 表组件175
8.2 位图合并177
8.2.1 较低的基数179
8.2.2 空值列182
8.3 CPU成本计算185
8.4 一些有趣的示例186
8.4.1 多列索引187
8.4.2 位图连接索引187
8.4.3 位图转换188
8.5 本章小结191
8.6 测试用例192
第9章 查询变换193
9.1 入门194
9.2 过滤197
9.2.1 过滤优化200
9.2.2 标量子查询202
9.2.3 子查询分解208
9.2.4 复杂视图合并213
9.2.5 推入谓词215
9.3 一般子查询216
9.3.1 子查询参数218
9.3.2 分类219
9.3.3 半连接224
9.3.4 反连接226
9.3.5 反连接异常228
9.3.6 Null和Notin229
9.3.7 有序提示231
9.4 星型变换连接232
9.5 星型连接237
9.6 展望239
9.7 本章小结240
9.8 测试用例241
第10章 连接基数243
10.1 基本的连接基数244
10.2 实际SQL的连接基数249
10.3 扩展和异常情况252
10.3.1 使用范围的连接252
10.3.2 不等于253
10.3.3 重叠256
10.3.4 直方图257
10.3.5 传递闭包260
10.4 三表连接264
10.5 空值267
10.6 实现问题270
10.7 困难之处274
10.8 特性276
10.9 另一观点278
10.10 本章小结279
10.11 测试用例279
第11章 嵌套循环281
11.1 基本机制282
11.2 实际示例286
11.3 完备性检查287
11.4 本章小结291
11.5 测试用例291
第12章 散列连接293
12.1 入门294
12.1.1 最优散列连接297
12.1.2 一遍散列连接299
12.1.3 多遍散列连接304
12.2 追踪文件308
12.2.1 event 10104308
12.2.2 event 10053309
12.3 难点311
12.3.1 传统成本计算311
12.3.2 现代成本计算312
12.4 比较313
12.5 多表连接318
12.6 本章小结321
12.7 测试用例321
第13章 排序与归并连接323
13.1 入门324
13.1.1 内存的使用329
13.1.2 CPU的使用330
13.1.3 sort_area_retained_size333
13.1.4 pga_aggregate_target334
13.1.5 实际I/O337
13.2 排序的成本339
13.3 比较343
13.4 归并连接346
13.4.1 归并机制347
13.4.2 无最初排序的归并连接351
13.4.3 笛卡尔归并连接352
13.5 聚集及其他354
13.5.1 索引358
13.5.2 集合运算359
13.6 最后一次提醒363
13.7 本章小结365
13.8 测试用例366
第14章 10053 trace文件367
14.1 查询368
14.2 执行计划369
14.3 环境370
14.4 追踪文件371
14.4.1 参数设置372
14.4.2 查询块375
14.4.3 存储统计信息376
14.4.4 单表378
14.4.5 完备性检查379
14.4.6 一般计划380
14.4.7 Join order[1]380
14.4.8 Join order[2]386
14.4.9 Join order[3]387
14.4.10 Join order[4]388
14.4.11 Join order[5]388
14.4.12 Join order[6]392
14.4.13 Join order[7]392
14.4.14 Join order[8]395
14.4.15 Join order[9]397
14.4.16 Join order[10]398
14.4.17 Join order[11]398
14.4.18 Join order[12]401
14.4.19 Join order[13]404
14.4.20 Join order[14]405
14.4.21 Join order[15]406
14.4.22 Join order[16]407
14.4.23 Join order[17]407
14.4.24 Join order[18]409
14.5 连接评估小结410
14.6 测试用例413
附录A 升级问题415
A.1 dbms_stats416
A.2 频率直方图417
A.3 CPU成本计算417
A.4 舍入误差417
A.5 绑定变量窥视418
A.6 连接间的空值418
A.7 B树到位图的转换418
A.8 索引跳跃扫描419
A.9 AND-Equal419
A.10 索引散列连接420
A.11 修正的In-List420
A.12 传递闭包420
A.13 sysdate算术修正421
A.14 对空值的索引422
A.15 pga_aggregate_target422
A.16 排序422
A.17 分组423
A.18 完备性检查423
A.19 超出界限的情况423
A.20 关于类型423
A.21 optimizer_mode424
A.22 降序索引424
A.23 复杂视图合并424
A.24 非嵌套子查询424
A.25 标量和过滤子查询425
A.26 并行查询策略的两次变化425
A.27 动态采样425
A.28 临时表425
A.29 字典统计426
附录B 优化器参数427
B.1 optimizer_features_enable428
B.2 10053 trace文件430
B.3 v$sql_optimizer_env435
使用说明1、下载并解压,得出pdf文件
2、如果打不开本文件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读