CruiseYoung提供的带有详细书签的电子书籍目录
http://blog.csdn.net/fksec/article/details/7888251
Oracle性能诊断艺术(Oracle数据库优化的里程碑式著作)
基本信息
原书名: Troubleshooting Oracle Performance
原出版社: Apress
作者: (瑞)Christian Antognini
译者: 童家旺 胡怡文 冯大辉
丛书名: 图灵程序设计丛书 数据库
出版社:人民邮电出版社
ISBN:9787115215147
上架时间:2009-10-30
出版日期:2009 年10月
开本:16开
页码:451
版次:1-1
所属分类: 计算机 > 数据库 > Oracle
编辑推荐
Oracle数据库优化的里程碑式著作.
涵盖Oracle各版本..
源自实战的真知灼见...
内容简介
前端业务应用炙手可热之日,便是优化后端数据库性能之时。当此之际,身怀数据库优化的绝技,可以让你平步职场,傲视群英。.
本书是oracle数据库优化专家christian antognini的一部继往开来的里程碑式著作。书中的最佳实践和诸多建议全部来源于作者在实战一线的丰富积累。不仅简单实用,而且发人深省,堪称一座“宝库”,适合各层次读者研读和发掘。..
与其他同类图书不同,本书不仅涵盖了市面上常见的各种oracle版本,还指明了各个版本独有的性能优化特性。全书以崭新的视角开篇立论,围绕查明问题真相和搜寻有效方略,透彻讲解了查询优化器的配置,表访问、连接和物理表布局的优化,以及加速sql执行计划等重要主题,被读者誉为“最透彻,但又最通俗的性能优化好书”。值得拥有!...
作译者
Christian Antognini 瑞士苏黎世Trivadis公司首席顾问和讲师,从1995年就开始致力于探究Oracle数据库引擎的工作机制。他最热衷的是逻辑与物理数据库的设计、 数据库与Java应用程序的集成、查询优化器,以及与性能管理和优化相关的所有方面。他还是Trivadis性能团队和OakTable 网站的核心成员。.
童家旺 安徽芜湖人。毕业于上海电力学院工商管理专业,现供职于阿里巴巴,负责产品数据库的维护工作。主要关注Oracle数据库以及Unix(Linux)操作系统,尤其关注这些产品的设计思路、理念,不止于满足知其然,更想了解其所以然.空闲时喜读各种闲书,涉及经济、历史、政治、文学等...
胡怡文 江苏淮安人.现供职于支付宝(中国)网络技术有限公司,担任商业智能部门的数据仓库工程师.关注BI架构与设计、数据库和操作系统技术,常沉浸其中,偶有所得亦欣然自喜.平时好读书,爬山,骑车,四处走走.愿行万里路,交天下朋友.
冯大辉 就职于支付宝(中国)网络科技有限公司(Alipay.com),担任过DBA、数据架构师,现负责领导支付宝数据库团队.过去几年间,他的工作集中在数据库管理、优化、数据架构规划、解决方案等方面.2007年国内首批OraclecACE,网络ID“Fenng”,长期关注Webc2.0网站架构技术.个人技术Blog:http://dbanotes.net....
目录
封面 -19
封底 -18
书名 -17
版权声明 -16
致中国读者 -15
译者序 -14
序 -12
致谢 -10
关于本书 -9
关于OakTable Network -7
目录 -4
第一部分 基 础 1
第1章 性能问题 2
1.1 需要为性能做规划吗 2
1.1.1 需求分析 2
1.1.2 分析和设计 4
1.1.3 编码和单元测试 4
1.1.4 集成和验收测试 5
1.2 什么是性能问题 5
1.2.1 系统监控 6
1.2.2 响应时间监控 6
1.2.3 强迫调优失调症 6
1.3 如何解决性能问题 7
1.3.1 业务角度与系统角度 7
1.3.2 把问题分类 8
1.3.3 解决问题 8
1.4 小结 9
第2章 关键概念 10
2.1 选择性和基数 10
2.2 游标的生命周期 11
2.3 解析的过程 13
2.3.1 共享游标 15
2.3.2 绑定变量 17
2.4 读写数据块 24
2.5 小结 25
第二部分 找出问题 27
第3章 找出性能问题 28
3.1 分而治之 28
3.2 分析路线图 29
3.3 性能测量与剖析分析 32
3.4 性能测量 32
3.4.1 应用程序代码 33
3.4.2 数据库调用 35
3.5 剖析应用程序代码 38
3.5.1 简明的性能剖析 38
3.5.2 细节化性能剖析 43
3.6 跟踪数据库调用 46
3.6.1 sql跟踪 46
3.6.2 跟踪文件的结构 58
3.6.3 使用trcsess 60
3.6.4 剖析工具 61
3.6.5 使用tkprof 62
3.6.6 使用tvd$xtat 71
3.7 剖析pl/sql代码 79
3.7.1 安装剖析工具 80
3.7.2 安装输出表 80
3.7.3 收集剖析数据 81
3.7.4 报告剖析数据 82
3.7.5 gui方式 83
3.8 小结 84
第三部分 查询优化器 85
第4章 系统和对象统计信息 86
4.1 工具包dbms_stats简介 86
4.2 系统统计 87
4.2.1 数据字典 88
4.2.2 非工作量统计信息 89
4.2.3 工作量统计信息 90
4.2.4 对查询优化器的影响 92
4.3 对象统计信息 94
4.3.1 有哪些对象统计信息可用 95
4.3.2 收集对象统计信息 108
4.3.3 锁定对象统计信息 123
4.3.4 比较对象统计信息 125
4.3.5 删除对象统计信息 127
4.3.6 保持统计信息时效性的策略 129
4.4 通用服务 130
4.4.1 统计信息历史 130
4.4.2 创建和删除备份表 131
4.4.3 导出、导入、获取和设置操作 132
4.4.4 日志 132
4.5 小结 133
第5章 配置查询优化器 134
5.1 配置还是不配置 134
5.2 配置路线图 135
5.3 设置正确的参数 136
5.3.1 查询优化器参数 137
5.3.2 pga管理 150
5.4 小结 153
第6章 执行计划 154
6.1 获取执行计划 154
6.1.1 sql语句explain plan 154
6.1.2 动态性能视图 157
6.1.3 awr和statspack 161
6.1.4 跟踪功能 163
6.1.5 dbms_xplan包 165
6.2 解释执行计划 175
6.2.1 父子关系 176
6.2.2 操作类型 177
6.2.3 单独型操作 177
6.2.4 非相关联合型操作 179
6.2.5 相关联合型操作 180
6.2.6 分而治之 186
6.2.7 特殊的例子 188
6.3 识别低效的执行计划 190
6.3.1 错误的评估 190
6.3.2 未识别约束 192
6.4 小结 193
第7章 sql优化技术 194
7.1 改变访问结构 195
7.1.1 运行机制 195
7.1.2 何时使用 196
7.1.3 缺陷和谬误 196
7.2 修改sql语句.. 196
7.2.1 运行机制 196
7.2.2 何时使用 198
7.2.3 缺陷和谬误 198
7.3 提示 198
7.3.1 运行机制 198
7.3.2 何时使用 204
7.3.3 缺陷和谬误 204
7.4 改变执行环境 205
7.4.1 工作机制 206
7.4.2 何时使用 208
7.4.3 缺陷和谬误 208
7.5 sql概要 208
7.5.1 工作机制 209
7.5.2 何时使用 219
7.5.3 缺陷和谬误 219
7.6 存储提纲 220
7.6.1 工作机制 221
7.6.2 何时使用 227
7.6.3 缺陷和谬误 227
7.7 sql计划基线 229
7.7.1 工作机制 229
7.7.2 何时使用 240
7.7.3 缺陷和谬误 240
7.8 小结 241
第四部分 优化器 243
第8章 解析 244
8.1 识别解析问题 244
8.1.1 快速解析 245
8.1.2 长解析 248
8.2 解决解析问题 250
8.2.1 快速解析 251
8.2.2 长解析 256
8.3 应对解析问题 256
8.3.1 游标共享 257
8.3.2 服务器端语句缓存 258
8.4 使用应用编程接口 260
8.4.1 pl/sql 261
8.4.2 oci 264
8.4.3 jdbc 265
8.4.4 odp.net 266
8.5 小结 268
第9章 优化数据访问 269
9.1 找出不理想的访问路径 269
9.1.1 识别 269
9.1.2 陷阱 271
9.1.3 原因 273
9.1.4 解决办法 274
9.2 具有弱选择性的sql语句 277
9.2.1 全表扫描 277
9.2.2 全分区扫描 279
9.2.3 范围分区 279
9.2.4 哈希与列表分区 289
9.2.5 组合分区 289
9.2.6 设计考虑 291
9.2.7 全索引扫描 293
9.3 具有强选择性的sql语句 295
9.3.1 rowid访问 296
9.3.2 索引访问 297
9.3.3 单表哈希聚簇访问 324
9.4 小结 325
第10章 表连接优化 326
10.1 定义 326
10.1.1 连接树 326
10.1.2 连接的类型 329
10.1.3 限制条件与连接条件 332
10.2 嵌套循环连接 333
10.2.1 概念 333
10.2.2 两表连接 334
10.2.3 四表连接 335
10.2.4 块预取 336
10.2.5 其他可选的执行计划 337
10.3 合并连接 338
10.3.1 概念 338
10.3.2 两表连接 339
10.3.3 四表连接 341
10.3.4 工作区 342
10.4 哈希连接 346
10.4.1 概念 346
10.4.2 两表连接 347
10.4.3 四表连接 348
10.4.4 工作区 350
10.4.5 索引连接 350
10.5 外连接 350
10.6 选择连接方法 351
10.6.1 first_rows优化目标 352
10.6.2 all_rows优化目标 352
10.6.3 支持的连接方法 352
10.6.4 并行连接 352
10.7 分区智能连接 353
10.7.1 完全分区智能连接 353
10.7.2 部分智能分区连接 355
10.8 转换 357
10.8.1 连接去除 357
10.8.2 外连接转换为内连接 358
10.8.3 子查询非嵌套化 359
10.8.4 星形转换 360
10.9 小结 365
第11章 高级优化技术 366
11.1 物化视图 366
11.1.1 运行机制 366
11.1.2 何时使用 384
11.1.3 缺陷与谬误 385
11.2 结果缓存 385
11.2.1 运行机制 386
11.2.2 何时使用 391
11.2.3 缺陷与谬误 391
11.3 并行处理 392
11.3.1 运行机制 392
11.3.2 何时使用 408
11.3.3 缺陷与谬误 408
11.4 直接路径插入 412
11.4.1 运行机制 412
11.4.2 何时使用 414
11.4.3 缺陷与谬误 414
11.5 行预取 415
11.5.1 运行机制 415
11.5.2 何时使用 419
11.5.3 缺陷与谬误 419
11.6 数组接口 419
11.6.1 运行机制 419
11.6.2 何时使用 422
11.6.3 缺陷与谬误 422
11.7 小结 422
第12章 优化物理设计 424
12.1 最佳字段顺序 424
12.2 最优数据类型 426
12.2.1 数据类型选择方面的陷阱 426
12.2.2 选择数据类型的最佳实践 429
12.3 行迁移与行链接 430
12.3.1 迁移与链接 431
12.3.2 问题描述 433
12.3.3 找出问题 433
12.3.4 解决方案 433
12.4 数据块争用 434
12.4.1 问题描述 434
12.4.2 找出问题 435
12.4.3 解决方案 437
12.5 数据压缩 440
第五部分 附 录 443
附录A 可下载文件 444
译者序
还是在2008年7月的时候,一次在线闲聊中,我和阿里巴巴B2B的童家旺谈及写本数据库方面的技术图书的想法。我曾与他在一个DBA团队共事,深知他的技术功力。不过相对于图书创作来说,他更倾向于翻译一本质量过硬的作品。家旺慧眼识珠,在饶有兴趣地阅读了Troubleshooting Oracle Performance的部分样章之后,终于按耐不住内心的冲动,决定要把这本书翻译出来。我们很快联系到了人民邮电出版社图灵公司并达成意向。这本书原作厚达600多页,一人翻译在时间上肯定有些吃紧,加上我也很认可这本书,所以也加入到了翻译团队。考虑到各自工作也比较繁重,所以我又拉来在支付宝数据仓库团队的同事胡怡文,一起来翻译。翻译图书是件吃力不讨好的活,时间紧、任务急、酬劳低,质量不过关还会遭受读者质疑,唯愿我们此次翻译能够换来读者的好评。能够看到此书中文版面市,我们这些译者倍感荣幸。.
关于Oracle优化的书在图书市场上并不少见,但有些图书内容陈旧,或是主要提供一些脚本风格的案例展示,系统化且有深度的优化图书并不多。这本Troubleshooting Oracle Performance(TOP)是从2008年到现在国外Oracle相关书籍中最值得关注的一部大作。
本书第1、3、4、9章由冯大辉翻译。感谢张磊(BlogKid)对第1章初稿所做的辛苦工作;感谢美国Amazon架构师朱一对第4章初稿所做的辛苦工作。第2、10、11、12章由童家旺翻译。感谢阿里巴巴同事郑勇斌对第12章校稿所做的工作。第5、6、7、8章以及附录A由胡怡文翻译。全书校稿以及前言部分的翻译由童家旺、胡怡文、冯大辉共同协作完成。读者在阅读本书的过程中如果遇到问题或者有意见建议,请发送邮件到这个Google群组:troubleshooting-oracle-performance@googlegroups.com。另外请关注http://dbanotes.net/top,我们将在这里第一时间发布勘误信息。..
感谢人民邮电出版社图灵公司的编辑傅志红以及其他未曾谋面的编辑的倾力协作。感谢刘江总编给予的大力支持。
——冯大辉
2009年8月
感谢阿里巴巴B2B DBA团队给予的支持与协助。感谢妻子苏红以及母亲在这段时间对孩子的照顾,使得我可以腾出时间专心翻译这本书。另外要特别感谢郑勇斌帮助我审查我翻译的部分章节,并提出很多翻译意见。
——童家旺
感谢所有支付宝数据仓库同事给予的支持与帮助。感谢父母的关心,也祝他们健康。感谢冯大辉、樊亚飞一直以来对我的帮助和解惑,感谢女友张茜的照顾和亲手做的美味食物。感谢所有朋友、同学和亲人在此期间给我的鼓励和宝贵意见。
——胡怡文
感谢在支付宝的架构师团队的同事以及支付宝各位领导的支持。感谢妻子姚湘怡的照顾。感谢广大热心网友在我的个人网站(dbanotes.net)上针对译稿初稿提出的建议与宝贵意见。感谢朱一、张磊两位朋友的大力协助。...
——冯大辉
序言
与过去的10年相比,现在在书店买到的Oracle性能方面的图书,其内容和质量上有了极大提升。我认为这对大家充分挖掘Oracle的性能无疑是最好的事情。.
我们以前能买到的关于Oracle性能的图书都千篇一律。那些书暗示 Oracle系统必然承载过多的I/O(实际上不一定)或是内存不足(这和他们描述的I/O过多其实是一回事,但却不是事实)。那些书向你展示可能运行的数不清的SQL脚本,告诉你要优化SQL,并且扬言这样就能搞定一切。
真是不堪回首的漫漫长夜啊!
Chris的这本书是给我们带来光明的一本书。光明与黑暗的界线,在于能否体现出一个简单的概念,这个概念是你从10岁开始数学老师就让你反复练习的——展现你的思路(show your work)。
我的意思不是指上台说故事,就像有些人说他们在数百个客户的站点提升了若干倍性能,并自诩为专家那样。我是说,展现你的思路,这意味着记录一个起点度量,构建可控的实验,然后记录下一个度量,并坦诚地公布结果,让读者能够完全理解,如果他们愿意甚至可以重现你的测试。
这是个了不起的事情。当作者开始这样做的时候,Oracle读者已比从前更加明智。从2000年开始, Oracle社区的人数已经有很大增长,他们能提出具有深度的性能问题并需要有价值的答案。过去人们相信过的那些错误观念很快就被一一摒弃了。
在本书中,Chris遵循切实可行的模式,讲述了有用的信息。但是,他并不止于此。他展示给读者他是如何探索得知的,也就是说,他告诉你如何找到自己需要的东西。他在本书中展现了他的思路。
这带来了两个益处。首先,展示他的思路有助于读者加深理解他阐述的内容,这使得他的经验对你来说容易记忆并应用。其次,通过理解他的例子,你不仅能够掌握Chris阐述的内容,还能够举一反三,回答Chris没有讲到的其他好问题,比如在这本书付梓之后下一个版本的Oracle将会有什么特性这样的问题。
此书对我来说是一本技术与理念并重的参考书,不仅包含了大量完备的可重用的实例,而且包含了一些富有说服力的新观点,让我能分享Chris的观点与激情。我可以用他的观点去说服更多的人做正确的事。
Chris睿智而精力充沛,他站在诸多精英的肩膀上,吸取了Dave Ensor、Lex de Haan、Anjo Kolk、Steven Adams、Jonathan Lewis、Tom Kyte等许多人的智慧,他们为这个领域带来了严谨之风,在我眼中他们都是英雄。现在,我们可以站在Chris 的肩膀上了。
Cary Millsap
Cary Millsap是Method R公司的CEO。Method R是一家致力于提升软件性能的公司。..
Cary Millsap与Jeff Holt在2003年合著了Optimizing Oracle Performance,
这本书使得Cary与Jeff勇夺《Oracle杂志》2004年最佳作者奖。
可以通过http://method-r.com或http://carymillsap.blogspot.com联系Cary。
大约在20年前我开始使用Oracle关系数据库,摸索了大约3年时间我发现问题排查和优化真的是神秘莫测啊。
有一个开发者的查询语句跑得不是很好,因此把它发送给DBA组。我在检查了执行计划、数据样本后,告诉他可以对其中一个表添加一个索引,而使大多数开销消于无形。开发者的反应却是:“这是个小表,不需要索引。”(这种事情发生在使用Oracle RDBMS 6.0.36版本的那个时代,顺便提一下,那时候“短”表意味着不超过四个数据块长。)不管怎样,我还是创建了索引,查询快了30倍——接下来的解释环节当然必不可少了。
性能排查并不需要魔法、魔术或是神话,而是依赖于理解、观察与解释。理查德?费曼曾说过,“理论再完美也没用,也和你多聪明无关。如果理论与实验不符,就是错的。”关于 Oracle 性能有太多的“理论”是错的,早就应该从你的大脑中清除出去了,Christian Antognini 就是帮你做这个事情的人。
在本书的开始,Christian Antognini描述了事物运行机制,该观察什么类型的症状,这些症状代表了什么含义。尤其是,他还鼓励你在观察与分析的时候要有条理并依据相关的细节。只要采纳了这些建议,一旦出现性能问题,你应该能够找出真正的问题,并用最合适的方式解决它。
虽然这本书的每一页都值得仔细阅读,但我还是认为读者会以不同的方式从中受益。有些读者可能通过不时翻阅而获取某些特别的洞察力。比如我多年来一直试图理解等高直方图这样的命名原因,我读到第4章的时侯,Christian的描述让我豁然开朗。
. 有些读者依据某些特性的简短描述,就能理解Oracle实现该特性的缘由,并联系例子理解自己的应用场景。第5章中的“安全视图融合(Secure View Merging)”对我而言就是一例。
还有读者可能会反复阅读某一章节,以便透彻理解他们正在使用的一些特别重要的特性。我相信第9章关于分区的深入讨论会让很多人手不释卷,读而再读。...
这本书很有料,很值得阅读。谢谢你,Christian。
Jonathan Lewis
Jonathan Lewis著有Cost-Based Oracle: Fundamentals,
同样由Apress出版社出版。从他的Blog
http://jonathanlewis.wordpress.com
上能找到更多的实际案例。
媒体评论
本书对我来说是一本技术与理念并重的参考书,不仅包含了大量完备的可重用的实例,而且包含了一些富有说服力的新观点。我可以用他的观点去说服更多的人做正确的事。.
——Cary Millsap,Oracle公司系统性能集团前副总裁,数据库性能技术大师
关于Oracle性能有太多的“理论”是错的,早就应该从你的大脑中清除出了,Christian Antognini就是帮你做这个事情的人。...
——Jonathan Lewis,英国Oracle用户组织总监,Oracle数据库技术大师
1