基于oracle的优化 pdf,基于成本的oracle优化法则

基于成本的oracle优化法则是世界级Oracle大师刘易斯Jonathan Lewis的最新力作,该书以专家的视角对Oracle系统的基于成本的优化模型进行了深入浅出的分析和介绍,通过学习本书,您将能够理解优化器的“思维”、知道错误是如何造成的以及导致错误的数据模式,从而可以节约在设计和SQL查错方面耗费的大量时间,能够帮助DBA成为更好的设计者,还能帮助开发人员开发出更卓越的代码。

44daf32bffbf7b8bee18411e6af21d82.png

内容介绍《基于成本的Oracle优化法则》数据库领域的超级畅销书,也是近几年来Oracle领域最重要的著作之一,荣获2006年度Oracle杂志编辑选择大奖:自该书出版以来,受到无数读者、网友和专家的好评,被翻译成多种语言,成为众多中高级Oracle用户、DBA和开发人员的必看图书。

本书一共14章,按照顺序涵盖了如下主题:

●表扫描:比较简单,作为入门,介绍了一些关于CPU成本计算的知识。

●简单选择率:只有一个表,但包含了大量的关于算法的知识。

●简单B树索引:单块读取和多块读取的区别。

●群集因子:这也许是索引中最关键的特性。

●更微妙的选择率:介绍一个基本主题上的大量微小变化。

●直方图:为什么需要直方图,并介绍了OLTP和DSS/DW之间的区别。

●位图索引:并不是所有的索引都是相同的。

●变换:看到的不一定是得到的。

●连接:用4整章的内容来介绍两个表之间的连接。

●10053 trace:演示性示例。

●升级问题:从本书其余部分整理的警告和注意信息的集合。

1ff11c9a22b762b03481434e7ee1866c.png

章节目录目 录

第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、双击进行阅读

目 录 第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 BCHR 24 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_factor 65 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 令人惊奇的sysdate 123 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和Notin 229 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 10104 308 12.2.2 event 10053 309 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_size 333 13.1.4 pga_aggregate_target 334 13.1.5 实际I/O 337 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_stats 416 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-Equal 419 A.10 索引散列连接 420 A.11 修正的In-List 420 A.12 传递闭包 420 A.13 sysdate算术修正 421 A.14 对空值的索引 422 A.15 pga_aggregate_target 422 A.16 排序 422 A.17 分组 423 A.18 完备性检查 423 A.19 超出界限的情况 423 A.20 关于类型 423 A.21 optimizer_mode 424 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_enable 428 B.2 10053 trace文件 430 B.3 v$sql_optimizer_env 435
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值