我最近看到《Oracle性能优化科学与艺术》一本书的介绍,觉得很不错啊,谁看过这本书,谈谈感受好吗?
谁有它的电子文档传一下?
《Oracle性能优化科学与艺术》
图书定价:¥45.00
图书类型: |数据库系统|Oracle
图书质量:
出版说明: 清华文康
作 者:(美)罗森 (Lawson, C.) 著; 谢君英,周丽琴 译
版 次:2004年4月第1版 2003年4月第1次印刷
书 号:ISBN 7-302-08188-3/TP?5916
开 本:185×260
字 数:563千字
定 价:45.00元
内容简介:
本书作者根据长期使用Oracle的丰富经验,在本书中总结了识别、分离和修复性能问题的五步模型,即从“医师到魔术师”的方法。内容包括性能优化过程、问题分类、优化的人为因素和商业因素、跟踪问题的根本原因、等待事件统计数字的应用、分析SQL语句的瓶颈,以及设计和测试解决方案等。此外,本书配有大量的案例分析,使内容更加生动、更有说服力。
前言:
前 言
欢迎阅读《Oracle性能优化的科学与艺术》一书。
本书给出了进行性能优化的一种方法,其内容建立在逐章深入的基础之上。建议您一开始从头到尾通篇阅读全书。一旦设置好医师到魔术师(Physician-to-Magician)过程的环境,后面章节中的技术信息就可以作为有用的参考。
阅读本书前的准备
应该理解关系数据库的基本概念和各种类型的SQL语句。尽管您不必成为SQL专家,但是应该知道连接的含义是什么。
还假设您已经具备Oracle的基础知识,例如,知道init.ora参数是什么,或者侦听器是什么。还应该具备如何启动和停止Oracle数据库的经验。
要动手操作本书中的例子,需要的条件为:
1. 一个可运行的Oracle实例:8、8i或者9i
2. SQL*Plus
3. 一个具有DBA权限的账户
可从
http://www.curlingstone.com/下载本书完整的源代码。
除了这些基础之外,阅读本书不需要性能优化方面的任何背景知识。
本书约定
为了帮助您理解本书内容以及维持本书的一致性,全书使用了许多约定:
这些框中是性能优化的提示。
提示和背景信息用这种方式给出。
我们用下面的形式给出案例分析:
案例分析:一个案例分析样例
这里是一个案例分析,以阐述我们得出的观点。
DBA以特定的方式来尝试——但是不成功。他尝试另一种方式,成功了。我们从中汲取教训。
介绍较大的例子时,使用下类似以下的标题:
例子:优化一个查询
并且例子代码以下面这种形式给出:
In our code examples, the code foreground style shows new,
important, and pertinent code.
Code background shows code that’s less important in the present
Context, or code that has been seen before.
在屏幕菜单上出现的单词(比如File或Window菜单)都以类似于在屏幕上看到的字体形式出现。URL也以这种字体显示。
客户支持
进一步n提供在中我们总是很重视收到读者的来信,并且我们想了解您怎么看待本书:您喜欢哪些内容,不喜欢哪些内容,以及您认为下次我们可以在哪些方面做得更好。您可以将您的评价发电子邮件到feedback@curlingstore.com。请在邮件中注明书名。
勘误表
不会出现任何只要将有关错误的信息以电子邮件的形式发送到support@curlingstone.com即可该信息我们已经尽了最大的努力以确保本书的内容和代码中没有错误。但是人无完人,错误还会出现。如果您发现了本书的错误,比如拼写错误或代码错误,我们非常感谢您的反馈。将错误发送在勘误表中,您可以为以后的读者节约数小时的迷惑时间,当然也将有助于我们提供更高质量的信息。只要将错误信息发电子邮件到support@curlingstone.com,您的信息就会得到检查,如果正确,就会发布在该书的勘误页面上,并会在本书的后续版本中得以纠正。
想要看网上是否有本书的勘误信息,请访问
http://www.curlingstone.com/,并通过图书标题列表找到本书。
m电子邮件支持
的这类
4. 在“主题”“主题”字段中包括本书的书名、ISBN的最后四位数字和出现问题的页码。
如果您希望就本书中的问题直接询问详细了解本书的专家,那么请发电子邮件到support@curlingstone.com。通常,电子邮件应该包含以下内容:
5. 在消息件正文中包括您的姓名、联系方式和问题。
不会向您发送系列我们不会向您发送垃圾邮件。我们需要详细信息,以节省您的时间,也节省我们的时间。您发送的电子邮件将通过以下支持链:
6. 客户支持—— 亲自他们将会记录
7. 编辑人员—— 较难方面具体您的消息被发送给我们的客户支持人员,他们是第一个阅读您的电子邮件的人。他们有最常见问题解答的文件,能够马上回答关于本书或Web站点的一般问题。
8. 较深入的问题被传达到本书的技术编辑那里。他们在所有讨论过的主题方面有经验,并能够回答本书的一些详细技术问题。
作者—— 询问最后,不太可能的情况是,编辑不能回答您的问题,他将请求转发给本书作者。我们确实尽量防止作者的工作受到打搅,但是我们也非常高兴将特殊的问题转发给他们。Curlingstone的所有作者都帮助支持他们所著的书,并会将他们的答复发电子邮件给客户和编辑,因此,所有读者都将受益。
Curlingstone
目 录
第1章 性能优化的挑战 1
1.1 为什么要进行性能优化 2
1.2 编写本书的原因 3
1.3 本书读者对象 3
1.4 读者的好消息 4
1.5 医师到魔术师的方法 4
1.5.1 可适应性的需要 5
1.5.2 理解而非技巧 6
1.5.3 避免猜测 8
1.5.4 银弹 8
1.5.5 解决错误问题 8
1.5.6 揭露一个大秘密 8
1.5.7 与Oracle保持同步更新 10
1.6 艺术还是科学 11
1.7 预优化 13
1.8 小结 14
第2章 许多优化策略失败的原因 15
2.1 失败的策略 15
2.2 不完善的性能优化方法 16
2.2.1 银弹方法 16
2.2.2 偷工减料 17
2.2.3 快速培训班 22
2.2.4 偏爱的思想 26
2.2.5 解决错误的问题 27
2.2.6 猜测法 30
2.2.7 避免责备 32
2.2.8 其他障碍 33
2.3 小结 34
第3章 Oracle医师 35
3.1 定义问题 36
3.1.1 确定需求 36
3.1.2 定义需求的艺术 36
3.1.3 切忌孤军奋战 37
3.1.4 Oracle医生的“就职誓言” 38
3.1.5 无需太多的技术 38
3.2 找到主诉症状 39
3.2.1 “数据库是坏的” 40
3.2.2 仔细倾听 41
3.2.3 适时地问一些问题 45
3.2.4 查看所展示的问题 46
3.2.5 必要时寻求帮助 46
3.3 小结 47
第4章 处理人际关系 49
4.1 性能优化问题中的人为因素 50
4.2 DBA的角色 51
4.2.1 集中解决客户的问题 51
4.2.2 采取一个积极的方法 51
4.2.3 建立相互信任的人际关系 53
4.2.4 准确地报告问题 56
4.2.5 避免傲慢的态度 57
4.2.6 承担责任 58
4.2.7 避免责备 60
4.2.8 询问问题 62
4.2.9 接受批评 63
4.3 小结 63
第5章 Oracle侦探 64
5.1 验证问题的存在 65
5.1.1 问题确实存在吗 65
5.1.2 检查基本信息 66
5.1.3 错误消息 66
5.1.4 在控制环境下重新运行应用程序 67
5.1.5 检查运行日志 68
5.1.6 查询V$SQL视图以找到SQL语句 69
5.1.7 未使用绑定变量所带来的问题 72
5.1.8 采用工具监控应用程序 75
5.1.9 监视活动和非活动会话 76
5.2 量化问题 76
5.2.1 需要关注的问题 77
5.2.2 方法 77
5.2.3 生成跟踪文件 77
5.2.4 计时信息 80
5.2.5 许可及文件大小 80
5.2.6 TKPROF 81
5.3 注意所有异常因素 90
5.4 小结 90
第6章 收集更多的线索 92
6.1 等什么 93
6.2 等待事件的类型 93
6.3 视图概述 97
6.3.1 V$EVENT_NAME 97
6.3.2 V$SYSTEM_EVENT 98
6.3.3 V$SESSION_EVENT 99
6.3.4 V$SESSION_WAIT 100
6.4 使用系统事件10046进行跟踪 102
6.5 等待事件的使用例子 105
6.6 重要的警告 113
6.6.1 不是数据库引起的延迟 113
6.6.2 无法监测CPU时间 113
6.6.3 没有监测到的逻辑读 114
6.6.4 时间精确度 114
6.7 小结 114
第7章 Oracle病理学家 115
7.1 隔离根本原因 116
7.2 找出性能降低的根源 117
7.2.1 找出真正的原因 117
7.2.2 性能预算 118
7.3 简化 120
7.4 分治法 124
7.4.1 分化SQL代码 124
7.4.2 简化表连接 126
7.5 活动时间表方法 128
7.6 性能问题的常见原因 129
7.6.1 应用程序设计 129
7.6.2 数据库设计 132
7.6.3 init.ora参数 133
7.6.4 批处理任务的干扰 133
7.6.5 硬件 134
7.7 寻找根本原因的其他建议 136
7.7.1 简单的计时测试 136
7.7.2 大的结果集 136
7.8 小结 137
第8章 分析SQL瓶颈 138
8.1 SQL优化的作用 139
8.1.1 SQL分析人员的好消息 139
8.1.2 SQL分析的其他好处 140
8.2 使用新的数据库功能 141
8.2.1 需要重新学习一些内容 142
8.2.2 更改过程中的稳定性 142
8.2.3 工具集中的新工具 143
8.3 从哪儿开始 143
8.3.1 查看统计数字 144
8.3.2 产生新的统计数字 144
8.3.3 确保运行的SQL可实现预期的功能 146
8.3.4 查看结果集的大小 146
8.3.5 各种优化过程入口的汇总 147
8.4 Oracle执行计划 147
8.4.1 获得执行计划 148
8.4.2 准备使用EXPLAIN PLAN功能 150
8.4.3 运行EXPLAN PLAN语句 150
8.4.4 执行计划的内容 151
8.4.5 Oracle提供的其他脚本 152
8.4.6 使用SQL * Plus AUTOTRACE获得执行计划 153
8.4.7 解释执行计划 155
8.5 视图和过滤 159
8.6 子查询 160
8.7 SQL优化的其他技巧 160
8.7.1 对象浏览工具 160
8.7.2 索引浏览工具 161
8.7.3 注意全表扫描 161
8.7.4 不要忽略逻辑读 162
8.7.5 指导开发人员 163
8.7.6 考虑缓存效果 164
8.8 计划表更为高级的功能 164
8.9 小结 167
第9章 分析SQL连接 168
9.1 什么是连接 169
9.1.1 等值连接和θ连接 169
9.1.2 内连接 170
9.1.3 外连接 170
9.2 连接技巧 171
9.2.1 嵌套循环 172
9.2.2 排序合并 174
9.2.3 哈希连接 176
9.2.4 群集连接 178
9.3 连接优化 179
9.3.1 选择合适的连接 179
9.3.2 SQL提示 180
9.4 分析连接的图形化方法 182
9.4.1 显示表和连接条件 182
9.4.2 列出过滤统计数字 183
9.4.3 开始连接 184
9.4.4 继续连接 186
9.4.5 多个条件 188
9.4.6 处理到大表的连接 188
9.5 影响连接的init.ora参数 189
9.6 其他连接主题 193
9.6.1 连接远程表 193
9.6.2 笛卡尔积 194
9.6.3 数据仓库的特殊连接 195
9.7 小结 201
第10章 病理学家的工具箱:其他策略 202
10.1 分析缓慢的数据库 202
10.1.1 是否每个人都觉得性能很慢 203
10.1.2 是否能够将问题归结于一部分原因 203
10.2 找出最差的症状 203
10.2.1 监视活动会话 204
10.2.2 确保没有阻塞会话 205
10.2.3 彻底检查网络 207
10.2.4 查看资源消耗大户 208
10.2.5 磁盘等待时间 210
10.2.6 查看参数极值的设置 210
10.2.7 留心分布式查询 211
10.3 操作系统工具 212
10.3.1 top 212
10.3.2 uptime 213
10.3.3 sar 213
10.3.4 sar选项 214
10.3.5 使用sar查找历史记录 215
10.3.6 iostat 215
10.3.7 vmstat 217
10.3.8 Windows操作系统中的工具 218
10.4 Oracle Statspack 222
10.4.1 安装Statspack 222
10.4.2 使用PERFSTAT快照 224
10.4.3 运行Statspack报告 225
10.4.4 报告示例 226
10.4.5 基础信息 227
10.4.6 缓存大小 227
10.4.7 加载简档 227
10.4.8 实例效率 228
10.4.9 前五个等待事件 229
10.4.10 与前台进程相关的所有等待事件 229
10.4.11 与后台进程相关的所有等待事件 229
10.4.12 实例统计 230
10.4.13 表空间统计数字 230
10.4.14 文件I/O统计数字 231
10.4.15 缓冲池统计数字 232
10.4.16 实例恢复统计数字 232
10.4.17 PGA聚集内存统计数字 233
10.4.18 PGA内存统计数字 233
10.4.19 回滚段统计数字 233
10.4.20 回滚段存储 234
10.4.21 撤销段摘要 235
10.4.22 闩锁活动 235
10.4.23 SGA内存摘要 236
10.4.24 init.ora参数 236
10.4.25 删除过时的快照数据 237
10.4.26 使用Statspack的建议 239
10.5 其他技巧 240
10.5.1 Oracle 9i对Statspack的改进 241
10.5.2 后台揭密:快照的实际工作 242
10.6 小结 242
第11章 Oracle艺术家 243
11.1 绘制解决方案 244
11.1.1 常规解决方案 245
11.1.2 更为复杂问题的解决方案:特殊的性能策略 248
11.2 Oracle Bug 256
11.2.1 难道处处都有Bug 257
11.2.2 找出大Bug:报警 257
11.2.3 TAR的麻烦世界 258
11.2.4 其他排除Bug的方法 259
11.3 新的优化选项 260
11.3.1 Database Resource Manager 260
11.3.2 物化视图 269
11.3.3 查询改写 270
11.4 “不可能”的问题 271
11.4.1 与其他Oracle专业人员联系 271
11.4.2 咨询系统管理员 272
11.4.3 Metalink 272
11.4.4 Oracle论坛 273
11.4.5 白皮书 273
11.4.6 有用的Web网站 273
11.5 小结 274
第12章 艺术家的调色板 275
12.1 SQL提示 276
12.1.1 何时使用SQL提示 276
12.1.2 如何使用提示 277
12.1.3 优化器模式提示 277
12.1.4 表和索引提示 279
12.1.5 连接提示 280
12.1.6 特殊的SQL提示 281
12.1.7 SQL提示疑难解分析 283
12.1.8 语法注意事项 283
12.2 PGA自动内存管理 283
12.2.1 设置PGA目标 284
12.2.2 PGA目标的优势 284
12.2.3 使用新的PGA参数 285
12.2.4 估算PGA需求 285
12.2.5 特殊的PGA视图 286
12.2.6 特殊的PGA术语 286
12.2.7 监视PGA内存优化 287
12.2.8 计算新的PGA内存目标 288
12.3 柱状图 290
12.3.1 柱状图需求 291
12.3.2 柱状图的样式 292
12.3.3 Oracle风格的柱状图 292
12.3.4 生成柱状图的传统方法 293
12.3.5 生成柱状图的新方法 294
12.3.6 查看柱状图 295
12.3.7 柱状图的局限性 297
12.4 小结 298
第13章 Oracle魔术师 299
13.1 设置舞台 300
13.1.1 测试解决方案 300
13.1.2 考虑对产品系统的影响 301
13.1.3 保存现有系统 303
13.2 挥动魔棒 304
13.2.1 念动咒语!让所有不满意的用户消失 304
13.2.2 确定性能变化 305
13.2.3 检查统计数据 306
13.2.4 观察意外出现的结果 306
13.3 如果犯了错 307
13.3.1 是否是正确的修正 307
13.3.2 系统如何不同 307
13.3.3 捕获相关的SQL 310
13.4 做好收尾工作 310
13.4.1 将解决方案记录入档 310
13.4.2 性能改进日志 311
13.4.3 结束与客户的交流 312
13.5 下一步操作 312
13.5.1 公布所学的内容 313
13.5.2 创建性能公文夹 313
13.6 小结 314
第14章 案例分析 316
14.1 为什么要花时间进行案例分析 316
14.2 使用案例分析 317
14.3 小结 329
附录A 有用的V$视图定义 330