编辑推荐
◆性能优化是每个Oracle DBA说不出的痛,也是难点。本书围绕性能调优这一主线,由浅入深地介绍了Oracle数据库性能优化的实践方法。
◆本书作者在数据库性能调优方面颇有心得。作者将多年的实践经验和智慧感悟汇集成册,希望能对后来者有所帮助。
◆本书内容全面、系统,本书可以帮你叩开Oracle 优化的大门,让你直接看到想要的正确的、完整的答案。如果你想学习Oracle优化,想要成为这方面的专家,那么本书将帮助你实现这个目标。
推荐购买:
《云计算网络珠玑》
 ;
内容简介
本书涉及了Oracle优化的所有方面,系统地讲述了Oracle优化的相关内容。本书分为5个部分。第1部分总体介绍了性能计划、实例优化和SQL优化,也简单提及了优化过程中会用到的一些特性和工具。第2部分描述了在一般情况下和紧急情况下的性能优化的通用方法。第3部分对在性能计划阶段应该考虑的性能优化相关的事项进行了介绍。第4部分介绍了如何通过优化实例来提升数据库性能。第5部分介绍了如何对SQL进行优化,SQL的优化重点在于对执行计划的优化。
本书可以帮你叩开Oracle优化的大门,让你直接看到想要的正确的、完整的答案。如果你想学习Oracle优化,想要成为这方面的专家,那么本书将帮助你实现这个目标。
作者简介
霜月琴寒,本名王鹏,东软软件公司工程师,1999年毕业后一直从事测试工作,最近6年一直在做性能测试,目前所在公司主要从事社保系统的研发,作者本人负责各地市性能测试项目,关于Oracle数据库性能优化积累了很多经验,从一开始根本不知道如何入手,到现在总结出了一些通用方法,中间花费了很多心思。为使后来者避开自己走过的弯路,特总结编写了本书,这本书涉及了Oracle 优化的所有方面,系统地讲述了Oracle 优化的相关内容。如果能对本书的内容融会贯通,那么在从事相应工作时肯定可以做到得心应手。
目录
第1部分 性能优化是怎么回事儿
第1章 了解性能优化 2
1.1 性能优化包括几个方面 2
1.1.1 性能计划 2
1.1.2 实例优化 2
1.1.3 SQL优化 4
1.2 哪些工具和特性可以帮助进行性能优化 5
1.2.1 自动性能调优特性 5
1.2.2 其他Oracle数据库工具 6
第2部分 性能优化的通用方法
第2章 性能优化的通用方法 8
2.1 Oracle性能提升方法 8
2.1.1 Oracle性能提升方法的步骤 9
2.1.2 性能概念建模的决策过程 10
2.1.3 Oracle系统中最常发生的十大错误 11
2.2 紧急情况下的性能提升方法 12
第3部分 性能优化三件事之一:设计者如何优化设计和开发
第3章 性能优化从设计和开发开始 16
3.1 Oracle方法论 16
3.2 理解投资选项 16
3.3 理解延展性 17
3.3.1 什么是延展性 17
3.3.2 系统延展性 17
3.3.3 阻碍延展性的因素 18
3.4 系统架构 19
3.4.1 硬件和软件组件 19
3.4.2 为需求配置匹配的系统架构 22
3.5 应用程序设计原理 24
3.5.1 简单的应用程序设计 24
3.5.2 数据建模 24
3.5.3 表和索引设计 25
3.5.4 使用视图 27
3.5.5 SQL执行效率 27
3.5.6 应用程序的实现 28
3.5.7 应用程序开发的趋势 29
3.5.8 负载测试、建模和实现 30
3.5.9 部署新的应用程序 32
第4部分 性能优化三件事之二:DBA如何合理使用资源而改善实例性能
第4章 资源有哪些 36
4.1 配置和使用内存 36
4.1.1 理解内存分配 36
4.1.2 配置和使用缓存 40
4.1.3 配置及使用共享池和大池 49
4.1.4 配置和使用重做日志缓存 68
4.1.5 PGA内存管理 70
4.1.6 管理服务器和客户端结果缓冲 82
4.2 I/O的配置和设计 92
4.2.1 关于I/O 92
4.2.2 I/O配置 93
4.2.3 数据库的I/O校准 100
4.2.4 使用Oracle Orion校准工具进行I/O校准 102
4.3 管理操作系统资源 113
4.3.1 理解操作系统性能问题 113
4.3.2 解决操作系统问题 116
4.3.3 理解CPU 117
4.3.4 解决CPU的问题 118
第5章 配置数据库如何使用资源 123
5.1 初始实例配置时的性能考虑 123
5.1.1 初始化参数 123
5.1.2 撤销(undo)空间的配置 124
5.1.3 指定重做日志文件的大小 125
5.1.4 创建后续的表空间 125
5.2 创建表和维护表时的性能考虑 126
5.2.1 表压缩 126
5.2.2 回收不用的空间 127
5.2.3 创建数据索引 127
5.3 共享服务器的性能考虑 128
5.3.1 使用与分配器相关的视图识别争用 128
5.3.2 识别共享服务器的争用 129
第6章 统计资源使用的效果 131
6.1 数据收集概览 131
6.1.1 数据库统计信息 132
6.1.2 操作系统统计信息 134
6.1.3 解释统计信息 136
6.2 AWR概览 137
6.2.1 快照 138
6.2.2 基线 138
6.3 AWR管理 141
6.3.1 管理快照 141
6.3.2 管理基线 143
6.3.3 管理基线模板 145
6.3.4 转移AWR数据 147
6.3.5 使用AWR视图 149
6.3.6 生成AWR报告 150
6.3.7 生成AWR时间段比较报告 155
6.3.8 生成活动会话历史报告 161
6.3.9 使用活动会话历史报告 165
第7章 实例优化:更合理地使用资源 169
7.1 自动化的性能诊断 169
7.1.1 自动数据库诊断监视器(ADDM)概览 169
7.1.2 设置ADDM 173
7.1.3 使用ADDM诊断数据库性能问题 173
7.1.4 查看ADDM信息 176
7.2 使用性能视图进行实例调优 176
7.2.1 实例调优步骤 177
7.2.2 解释Oracle数据库统计信息 185
7.2.3 等待事件统计信息 191
7.2.4 实时SQL监控 211
7.2.5 优化实例的恢复性能:快速启动错误恢复 215
第5部分 性能优化三件事之三:开发人员如何优化SQL执行计划
第8章 好的数据结构产生好的执行计划:索引和簇 224
8.1 理解索引的性能 224
8.1.1 优化逻辑结构 225
8.1.2 使用SQL Access Advisor优化索引 225
8.1.3 为索引选择列和表达式 225
8.1.4 选择混合索引 226
8.1.5 书写使用索引的语句 227
8.1.6 书写避免使用索引的语句 227
8.1.7 重建索引 228
8.1.8 精简索引 228
8.1.9 使用非唯一索引实现唯一性 228
8.1.10 使用启用的非验证性约束 229
8.2 为性能而使用基于函数的索引 230
8.3 为性能而使用分区索引 230
8.4 为性能而使用索引组织表 231
8.5 为性能而使用位图索引 231
8.6 为性能而使用位图连接索引 232
8.7 为性能而使用域索引 232
8.8 为性能而使用表簇 232
8.9 为性能而使用哈希簇 233
第9章 执行计划 235
9.1 查询优化器统计信息:选择执行计划的依据 235
9.1.1 查询优化器统计信息概览 235
9.1.2 管理“自动查询优化器统计信息收集” 236
9.1.3 手工收集统计信息 239
9.1.4 系统统计信息 244
9.1.5 管理统计信息 247
9.1.6 控制动态统计信息 255
9.1.7 查看统计信息 259
9.2 查询优化器:选择执行计划 262
9.2.1 查询优化器概览 262
9.2.2 查询优化器访问路径概览 274
9.2.3 连接概览 282
9.2.4 读懂执行计划 292
9.2.5 控制查询优化器的行为 294
9.3 解释计划:显示执行计划 297
9.3.1 理解EXPLAIN PLAN 297
9.3.2 PLAN_TABLE输出表 300
9.3.3 运行EXPLAIN PLAN 300
9.3.4 显示PLAN_TABLE的输出 301
9.3.5 阅读EXPLAIN PLAN的输出 302
9.3.6 使用EXPLAIN PLAN查看并行执行 303
9.3.7 使用EXPLAIN PLAN查看位图索引 306
9.3.8 使用EXPLAIN PLAN查看结果缓冲 307
9.3.9 使用EXPLAIN PLAN查看分区对象 307
9.3.10 PLAN_TABLE列 314
9.4 查询优化器提示:“大纲”的建筑材料,让查询优化器按指示行事 322
9.4.1 查询优化器提示概览 322
9.4.2 指定提示 328
9.4.3 使用视图的提示 332
9.5 计划稳定性:大纲,以“查询优化器提示”记录和存储计划 334
9.5.1 通过计划稳定性以保留执行计划 335
9.5.2 在查询优化器升级中使用计划稳定性 340
9.6 SQL计划管理器:“计划基线”,大纲的升级版 342
9.6.1 SQL计划基线概览 342
9.6.2 管理SQL计划基线 344
9.6.3 在SQL优化顾问中使用SQL计划基线 348
9.6.4 使用固定的SQL计划基线 349
9.6.5 显示SQL计划基线 349
9.6.6 SQL管理基地 350
9.6.7 导入和导出SQL计划基线 352
9.6.8 将存储大纲迁移到SQL计划基线 353
第10章 对SQL和执行计划进行跟踪与分析 363
10.1 端到端应用程序跟踪:得到客户端跟踪信息 363
10.1.1 为端到端应用程序跟踪启用和禁用统计信息的收集 364
10.1.2 查看为端到端应用程序跟踪收集的统计信息 365
10.1.3 启用和禁用端到端跟踪 365
10.1.4 查看启用的端到端跟踪 368
10.2 使用trcsess工具:组织跟踪信息 368
10.2.1 trcsess工具的语法 368
10.2.2 trcsess输出样例 369
10.3 了解SQL Trace和TKPROF 370
10.3.1 了解SQL Trace工具 370
10.3.2 了解TKPROF 370
10.4 使用SQL Trace和TKPROF 371
10.4.1 第1步:为跟踪文件管理设置初始化参数 371
10.4.2 第2步:启用SQL Trace工具 372
10.4.3 第3步:使用TKPROF格式化跟踪文件 373
10.4.4 第4步:解释TKPROF输出 376
10.4.5 第5步:保存SQL Trace工具统计信息 380
10.5 避免TKPROF解释错误 382
10.5.1 避免绑定变量陷阱 382
10.5.2 避免读一致性陷阱 383
10.5.3 避免模式陷阱 383
10.5.4 避免时间陷阱 384
10.6 TKPROF输出样例 385
10.6.1 TKPROF头样例 385
10.6.2 TKPROF正文样例 385
10.6.3 TKPROF总结样例 388
第11章 SQL优化:得到更好的执行计划 389
11.1 SQL优化概览 389
11.1.1 SQL优化介绍 389
11.1.2 优化目标 389
11.1.3 识别高负载SQL语句 390
11.1.4 自动SQL优化特性 392
11.1.5 开发高效的SQL语句 393
11.1.6 构建SQL测试用例 401
11.2 SQL调优顾问:针对SQL语句改善执行计划 403
11.2.1 自动调优优化器概览 403
11.2.2 管理自动SQL调优顾问 406
11.2.3 使用SQL调优顾问进行优化 410
11.2.4 管理SQL调优集合 416
11.2.5 管理SQL Profile 420
11.2.6 SQL调优视图 427
11.3 SQL访问顾问:针对整体负载改善执行计划 428
11.3.1 SQL访问顾问概览 428
11.3.2 使用SQL访问顾问 431
11.3.3 为“快速刷新”和“查询重写”优化物化视图 453
附录A 名词解释 462
前沿
前 言
我猜在你看到这本书之前,你可能已经在互联网的各种技术博客和论坛中学习到了一些关于Oracle优化的内容。但是有些内容是如此的散乱,以至于当你真的想要开始做优化时,根本不知道如何入手。在我刚开始学习Oracle优化时,这样的问题同样困扰了我很长时间。我强烈地感到:一本权威、系统的Oracle优化指导书是多么的重要。
而本书,涉及了Oracle优化的所有方面,系统地讲述了Oracle优化的相关内容。如果能对本书的内容融会贯通,那么在从事相应工作时肯定可以做到得心应手。
本书分为5个部分。
第1部分总体介绍了性能优化涉及的3个方面:性能计划、实例优化和SQL优化。另外,也简单提及了一些优化过程中会用到的特性和工具。
第2部分描述了在一般情况下和紧急情况下的性能优化的通用方法,其中也罗列了在调优实践中最常见到的10个错误。
第3部分对在性能计划阶段应该考虑的性能优化相关的事项进行了介绍。
第4部分介绍了如何通过优化实例来提升数据库性能。实例要工作就必须借助于资源。本部分围绕资源展开。
第5部分介绍了如何对SQL进行优化,SQL的优化重点在于对执行计划的优化。本部分围绕执行计划展开。
本书可以帮你叩开Oracle 优化的大门,让你直接看到想要的正确的、完整的答案。如果你想学习Oracle优化,想要成为这方面的专家,那么本书将帮助你实现这个目标。对于想学习Oracle优化的朋友来说,本书不仅是答案,也是机会,一个让你真正了解Oracle优化的机会。希望大家可以通过本书,在Oracle优化这条路上少走弯路,在正确的、宽阔的大路上走得更痛快、更自信!
由于本人能力有限,如有不妥之处还请大家指教。
霜月琴寒
2015年1月6日
免费在线读
2.1 Oracle性能提升方法
Oracle性能方法论帮助你在Oracle数据库中识别性能问题,包括识别瓶颈和修复它们。建议只有在已经确认存在一个瓶颈时才可以做出相应的改变。
性能提升是一个迭代的过程。因为解决掉一个瓶颈可能不会立即让性能得到提升,可能会发现另一个瓶颈。另外,在一些情况下,如果串行点移动到另一个更低效的组件那里,那么性能甚至会降低。
性能问题一般表现为吞吐量不足,或者用户/任务的响应时间不可接受,或者二者兼具。而问题可能位于应用程序模块之中或者存在于整个系统中。在查看任何数据库或者操作系统统计信息前,得到系统最重要的用户反馈是最重要的。这里的“最重要的用户”是指系统用户或者最终为应用程序付费的人。典型的用户反馈可能包括下面这些话:
“在线系统太慢了,以至于它让我的员工根本无法工作。”
“账单的产生实在太慢了。”
“当我面对巨大的网络流量时,响应时间不能接受,我丢失了客户。”
“现在我们一天会完成500笔生意,系统已经用到最大限度了,下个月会让所有用户开始使用我们的产品,用户量会增加到4倍。”
……
从这些坦率的反馈中,很容易看出用户认为什么才是决定性能的最重要指标。确定好这个性能指标和终止调优过程的标准,可以让性能过程的管理更简单,而且在每个层面上都更成功。
这些重要的性能指标最好以真实的业务目标来定义,而不是以系统的统计数据来定义。
对于真实的业务目标,以典型的用户语言来说可能是:
账单系统必须在3小时内可以处理100万个账户。
在网站峰值期间,刷新一个页面一定不要超过5秒。
系统必须能够在8小时内处理25000笔生意。
终极的成功是用户对系统性能的认可。性能工程师的角色就是要消除任何让性能降低的瓶颈,这些瓶颈可能是由于低效地使用了有限的共享资源或者滥用了共享资源引起的,这引起了串行化。由于共享资源是有限的,性能工程师的目标就是要高效地使用共享资源,并使系统可以处理的业务量达到最大化。在一个很高的层面上,整个数据库就是一个共享的资源。相应的,在较低层次上,一个CPU或者一个磁盘也可以被看成一个共享的资源。
你可以不断循环地使用Oracle性能提升方法,直到达到性能目标,或者确认目标根本不可能达到。这个过程是高度迭代的。有时,某些调查对改善系统性能可能只有很小的帮助或者根本没有任何帮助。要想能够精准、快速地发现系统最严重的瓶颈,时间和经验都是必要的。但是,对于某些有经验的性能工程师来说,经验优先的原则可能导致他们忽略一些有价值的数据和统计结果。这类行为更倾向于通过神话和传说来调优。这是非常危险的、昂贵的、不会成功的数据库调优方法。
自动化数据库诊断监视器(ADDM)使用一些性能提升方法,并为主要的性能问题的自动诊断提供分析和统计功能。使用ADDM,能大幅缩短提升系统性能所需要的时间。对于ADDM的描述,请参考第7章中的 “自动化的性能诊断”。
系统是如此的不同和复杂,以至于找到有力且快速的规则是不可能的。本质上,Oracle性能提升方法只是定义了一个工作方向,而不是一堆最终的规则。最棒的性能工程师会利用系统提供的数据和灵活的思考来确定每个具体的性能问题。
2.1.1 Oracle性能提升方法的步骤
(1)做如下常规检查。
① 从用户那里得到坦率的反馈。确定性能项目的工作范围,以及后续的性能目标。这个过程对将来做性能计划是非常关键的。
② 得到系统中的操作系统、数据库和应用程序在性能良好和性能糟糕时的完整的统计信息。如果不能全部得到,那就尽量得到可以得到的统计信息。丢失统计信息就像在犯罪现场丢失证据一样,这使得侦测工作更难、更耗时。
③ 检查所有与用户性能相关的计算机的操作系统。通过检查操作系统,可以找到那些被耗尽的硬件资源和系统资源。请列出任何被过度使用的资源以作为症状,等待今后的进一步分析。另外,检查所有硬件是否都没有报错信息。
(2)在当前系统中检查Oracle常见的10大错误,如果发现问题就将其列出来作为今后分析的症状。这是因为它们是最可能出现的问题。Oracle ADDM可以对这10个问题中的9个进行自动报告。请看第7章中的“自动化的性能诊断”,以及本章中的“Oracle系统中最常发生的10大错误”。
(3)使用症状作为线索建立一个模型,用以模拟系统中正在发生的事情,以此来了解是什么原因导致了性能问题。请看本章中的“性能概念建模的决策过程”。
(4)准备一系列补救措施,并对措施的效果进行预估,然后将这些措施以对系统最适合的顺序应用于系统。ADDM的每个建议都带有相应的效果说明。在性能工作中一个黄金定律就是一次只改变一件事情,然后测试改变前后的区别。然而,遗憾的是,系统宕机时间必须越短越好,这不允许进行特别缜密的调查。所以,如果不得不同时实施多个改变,那么试着确保它们是相互隔离互不影响的,以便于独立验证每个改变的效果。
(5)确认实施的改变是否已经产生了期望的效果,并且看看用户的接受程度是否提高。如果效果不佳,就得找到更多的瓶颈,并且不断地完善模型,直到你对应用程序的理解变得更精确。
(6)重复后3步,直到性能目标被达到,或者由于一些其他的限制达到性能目标变得不可能。
这个方法可以识别最大的瓶颈,其焦点在于通过提高应用程序的效率和消除资源的短缺,让性能大幅提升。在这个过程中,估计只能从针对实例的调整中得到很少的性能提升(小于10%),而巨大的性能提升则来自于针对低效的应用程序的调整。
Oracle数据库性能优化实践指南 pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版