Oracle数据库性能优化的艺术

出版时间:2012-7-30  出版社:机械工业出版社  作者:文平  页数:392  
Tag标签:无  

前言

数据库技术在IT系统中的广泛应用已不少于二十年。在这二十几年中,我们看到了数据库技术的起承与转合,产品的此消和彼长,供应商的发展或萎缩。太多的变化使我们有些茫然,快速的更迭使我们疲于奔命,作为数据库从业者,我们在技术方向上应该如何跟随?我们的行动方法应该如何适应?    这是一个大问题!    辩证法中很朴素的两条准则也许能帮到我们:第一,区分现象和本质;第二,要用系统的方法论来分析问题。    这点对于数据库优化工程来说更为重要!为什么这么说呢?    随着这二十年的IT应用持续深入,数据库的应用已经进入了相对成熟的时代。作为IT基础设施的核心组成部件,数据库早已不是可以孤立存在的系统——它与服务器系统、存储系统、网络系统等硬件紧密相连,它与操作系统、中间件系统、应用编码等软件紧密相连,它与用户访问模式、用户使用频度、数据承载压力紧密相连。这种多重关联特性决定了数据库性能的评估与优化就是一门综合的技术与艺术,是一项相当严密的系统工程。在这个系统工程中,我们需要透过各种表象进行全系统评估从而了解实质,并在最后得到相对精确和有效的结论与措施。    那么,能不能找到一种“具有普世意义的药方”呢?    很遗憾,我认为这种想法没有任何存在的可能性!IT应用的显著特点就是需求个性化、部署个性化、使用个性化。在这个高度个性化的环境中,提炼出一个普遍适用的数据库性能优化准则肯定是不可行的。    但这并不是说没有规律可循,或者说,“具有普世意义的流程”是存在的,这个流程可以包括如下的关键环节—从什么样的角度切入性能问题,如何保证数据库运行效率与IT系统中其他联动部件保持协调,数据库性能优化的工程过程要有哪些阶段。该流程并未局限于数据库内部,性能优化是要围绕IT应用整体来展开的。    具体说来,对于面向性能的优化,大家需要有四个共识。第一个共识是,要充分意识到这是一个全局问题,这是一个应用程序、部署方式、存储设备、服务器设备、网络拓扑、操作系统、数据库系统等全员参与的优化问题。由于很多问题是在数据库以外的,这要求性能分析和优化人员具有完整的知识体系——这是一个巨大的挑战。但是没有办法,IT系统中的任何一点都可能是性能问题的麻烦制造者。在这点上,局部的观点要服从全局的观点——从系统工程角度来看待问题。    第二个共识是,需要在设计阶段讨论性能问题,并及时做好性能风险上的应对策略。这里的设计不仅仅指应用的架构设计,还特指应用中的数据库逻辑结构设计与物理结构部署。数据库设计中的需求实现以及设计中的优化考虑,是数据库性能优化的基本决定要素。如果不能在设计上考虑优化要素,那么这样的架构设计就是先天不足的架构设计。    第三个共识是,需要在开发阶段讨论性能问题。很多工程案例告诉我们,应用的编码构成决定了应用在性能方面的主要特征。同样的应用逻辑,不同的代码实现,其效率可能是不同的。编写性能可以达到最佳同时系统开销最小的应用模块,是编码中事关性能的主要任务。但遗憾的是,在大多数系统中,由于编程人员的技术素质、项目完成工期上的压力、项目预算上的限制等缘由并未做完整的优化处理。    第四个共识是,在数据库性能优化工作中,如果系统处于运行阶段,这时优化人员的手段是极其有限的,优化效果和作用也相对具有局限性。从优化工作的贡献率来说,数据库调优成本会随着IT应用的生命周期进程而增加,但调优收益却是同步降低并逐渐趋于零的。    阅读本书之前,我们需要建立如上的几个共识,因为本书就是按照这样的共识和这样的顺序完成写作和表述的。    本书主要介绍的是Oracle数据库应用系统的优化问题,但是本书的技术观点不限于此,对于其他数据库(DB2也好,SQL Server也好,或者是MySQL、PostgreSQL等中小规模数据库也好)来说,本书的技术观点同样适用。    本书从前至后分为若干部分来描述数据库性能系统工程中的若干环节。其中的第一个环节便是数据库设计问题。把该问题作为本书的首要描述内容,就是因为最优的性能来源于最恰当的数据库设计方案。在工程实践中,很多数据库设计方案是由不当设计造成的,所以,在设计阶段,我们必须要考虑数据库设计问题。这里面包括逻辑数据库设计、物理数据库设计、物理数据库部署问题,分别就是本书第1~3章的内容。    正确的数据库物理部署和适应性配置策略,恰当的数据库访问设置和硬件资源的使用设定,是数据库优化运行的一个重要性能因素。这里主要涉及物理资源在操作系统层面的计算资源分配,存储空间使用的设置,内存资源的使用等问题。这些分别就是本书第4~6章的内容。    数据库可靠性和数据库性能往往会产生矛盾。那么,在Oracle中,我们如何考虑这个矛盾结合体呢?这是本书第7章试图要说明的内容。    对于Oracle来说,Oracle也许更适用于承载大规模数据,因为Oracle有着其他数据库平台所少有的大规模数据处理解决方案—多分区技术。本书第8章将向读者完整呈现Oracle数据库的表分区能力。    数据库设计中的一个重要内容是查询设计与索引配套。Oracle在处理查询时需要考量SQL查询的内容和对应数据库中表与索引的存在匹配关系,并因此由数据库优化器提交SQL执行计划。Oracle支持各种索引类型,那么我们如何使用这些索引类型,在什么情况下使用什么索引呢?这是本书第9章所试图描述的。    在数据库系统部署运行后,如何获得数据库运行性能状态,如何进行数据库运行中的资源使用分析,在分析时使用什么样的工具,以及这些工具返回信息的解读方法,这是本书第10~12章着重介绍的内容。这部分面向系统的运行监测和运维,试图解决我们在系统上线后“该做什么”的问题。    本书虽然是面向性能问题的,但是我也自知并不能解决所有问题。而且,本书中提到的技术观点和做法,可能在一些具体场景下适用,在其他一些场景下却并不适用,这点希望大家能够注意到。同时,作为本书作者,我在本书中没有写入任何所谓的“绝招、法宝”。近二十年从事数据库技术研究和实践的成功经验与失败教训告诉我,从来就不曾有绝招和法宝!能相信和依赖的,只有我们自己正确的系统观和工程实践上的科学精神,以及个人的勤奋和认真罢了!    恰在本书写作完成后,中国的IT业发生了一次不小的“地震”—华为正式进入IT领域,并成立IT产品线。鉴于对华为精神的敬仰,我接受了华为工作聘请,任职为华为IT架构师,进行数据库领域的产品架构设计和技术研发。我希望我的知识、经验,我的工作热情、潜能,能为华为在IT领域的拓展贡献自己的光和热。    同时,也祝本书的各位读者工作顺利、事业有成!文平

内容概要

  《Oracle数据库性能优化的艺术》内容高屋建瓴,用辩证法中的系统化分析方法,不仅从硬件(服务器系统、存储系统、网络系统等)、软件(操作系统、中间件系统、应用软件等)和应用场景(用户访问模式、用户使用频度、数据承载压力等)等多个相关联的维度深入阐述了具有普适意义的数据库性能评估与优化的思维方法和工作流程,而且还从流程的角度详细讲解了应该如何在数据库系统的架构阶段、设计阶段、开发阶段、部署阶段、运行阶段等各环节中去寻找性能问题的瓶颈和解决方案。
  全书一共12章:第1章从系统工程的角度总结了性能问题可以分为哪些阶段去考虑、性能问题有哪些种类,以及性能改进的工程方法等;第2章详细讲解了在数据库的设计阶段如何去考虑数据库的性能问题;第3~6章从物理数据库部署、数据库访问设置、硬件资源设定、存储空间和内存资源的使用、实例配置与缓存优化等多方面讲解了数据库系统在部署阶段的性能优化问题;第7章探讨了如何平衡数据库可靠性和性能之间的矛盾;第8章完整呈现了Oracle数据库的表分区能力,是解决与大规模数据处理相关的性能问题的关键;第9章从索引和执行计划的角度讲解了数据库性能优化的方法;第10~12章着重介绍了在数据库系统部署并运行后,如何获得数据库运行时的性能状态,如何对正在使用的各种资源进行分析,分析时使用什么工具,以及如何解读这些工具返回的信息。
  本书重在“授人以渔”,虽然主要内容是围绕Oracle数据库系统展开的,但是书中的观点同样适用于DB2、SQL
Server、MySQL、PostgreSQL等数据库系统。

作者简介

  文平,原名侯文平,在大型数据库系统和UNIX/Linux平台领域的一线奋斗了近20年。他是一位资深的数据库专家,在Oracle、DB2、Sybase等大型数据库系统的原理、应用、架构、设计、分析、性能优化等方面积累了大量宝贵的经验;他是一位资深的UNIX/Linux系统专家,精通AIX、HP-UX、Solaris
和SCO等UNIX系统以及主流Linux系统的架构、部署、管理、运维及性能优化;他是一位资深的系统架构师,不仅对数据库系统和UNIX/Linux系统的架构和设计有十分深入的研究,而且还极为擅长大型软件项目的架构和设计。他还是一位资深的技术顾问和培训师,长年为中石油、中海油等诸多超大型企业提供数据库和UNIX/Linux系统方面的技术咨询与培训支持,同时他还是国内各主要相关培训机构的特聘讲师。他在业界也颇具影响力,多次受邀在国内著名的数据库技术大会和系统架构师大会上发表重要的主题演讲,深受欢迎。
  此外,他还是一位热衷于分享的技术作家,十多年来,精心撰写并出版了多部技术专著,广获读者好评。部分著作列举如下:
  《Oracle大型数据库系统在AIX/UNIX上的实战详解》
  《Sybase数据库在UNIX、Windows上的实施和管理》
  《Oracle 8 系统开发与管理——iAS配置、管理与开发》
  《Sybase Internet/Intranet解决方案:Web.SQL应用开发》
  《PowerBuilder 开发中的数据库设计》
  《AIX系统管理、维护与高可用集群建设》。

书籍目录

前言
第1章 综述:优化是一个系统工程
1.1 性能问题是一个系统工程
1.1.1 考虑性能问题的不同阶段
1.1.2 考虑性能问题的不同方面
1.1.3 性能架构中的问题分类
1.2 性能改进的工程方法
1.2.1 不要希望一步到位!
1.2.2 有时也能一步到位?
1.2.3 性能改进工作流程
1.2.4 建立性能分析流程图
1.2.5 编程中应尽量避免的问题
1.2.6 紧急事件性能处理
第2章 设计与优化:物理数据库结构设计
2.1 数据库的特定运行平台
2.2 物理设计与性能的关系
2.3 应用框架与性能特征
2.4 物理表设计的关注点
2.4.1 从逻辑模型到物理模型
2.4.2 物理数据库设计的范围
2.4.3 规范化的设计
2.4.4 反规范化设计
2.4.5 另类反规范化
2.4.6 是否反规范化
2.5 索引的初始设计
2.5.1 索引对象的基本结构
2.5.2 索引的可选择性指标
2.5.3 索引的双面性特征
2.5.4 索引的类型
2.5.5 索引的初始确定
2.5.6 临时表的使用
第3章 部署与优化:准备基本运行环境
3.1 性能问题在表象上的欺骗性
3.2 理解数据库需要的系统资源
3.2.1 IO资源的使用
3.2.2 内存资源的使用
3.2.3 CPU资源的使用
3.2.4 解读内存与CPU状态
3.3 小型机数据库部署准备
3.3.1 AIX的部署准备
3.3.2 HP-UX的部署准备
3.3.3 Solaris的部署准备
3.4 X86系统数据库部署准备
3.4.1 Linux系统的部署准备
3.4.2 Windows系统的部署准备
第4章 部署与优化:数据库的优化部署
4.1 实例初始配置注意点
4.2 数据库空间使用关注
4.3 表空间的创建管理
4.4 创建表时的性能因素
4.5 数据导入与索引维护
第5章 实例优化:配置高效运行环境
5.1 实例配置与缓存优化
5.1.1 启用自动内存管理
5.1.2 主机内存分配原则
5.1.3 使用缓存顾问工具
5.1.4 缓存的命中率问题
5.1.5 缓存命中率分析
5.1.6 精细化缓存的配置
5.2 SQL与缓存的使用
5.2.1 缓存优化
5.2.2 查看数据缓存内容
5.2.3 共享池的效率检查
5.2.4 重做日志缓存问题
5.3 PGA内存分配原则
5.4 Oracle虚拟化关注点
5.4.1 IO问题上的关注点
5.4.2 内存问题上的关注点
5.4.3 CPU问题上的关注点
5.4.4 故障恢复问题的解决
第6章 存储优化:配置高效存储环境
6.1 IO问题的表象与内涵
6.2 存储介质的基础配置
6.2.1 使用逻辑卷技术
6.2.2 设定存储参数
6.3 存储IO能力探究
6.3.1 Orion的安装
6.3.2 Orion的使用
第7章 综合部署:Oracle可靠性设置
7.1 数据库设置的综合考虑
7.1.1 设置数据库的内存使用
7.1.2 数据库的进程使用设置
7.1.3 设置数据库IO模式
7.1.4 设置数据库的归档模式
7.1.5 使用闪回恢复区归档
7.1.6 设置冗余控制文件
7.1.7 保留控制文件信息
7.1.8 设置联机重做日志文件
7.1.9 设置联机重做日志组数
7.1.10 设置数据块校验和检查
7.1.11 打开性能时间统计
7.1.12 表空间和段管理方式
7.1.13 设定多临时表空间和组
7.1.14 使用自动撤销管理
7.1.15 设置空间错误延时
7.1.16 设置数据库闪回
7.2 RAC下的设置
7.2.1 注册远程监听器的实例
7.2.2 设置内部互联网络
7.3 加密表数据
7.4 加密表空间
第8章 对象优化:大表分区方式部署
8.1 分区技术适用的范围
8.2 分区技术的基本概念
8.2.1 分区表的结构
8.2.2 分区部署的收益
8.2.3 分区部署的成本
8.2.4 索引分区
8.3 分区表的管理操作
8.3.1 面向分区的管理
8.3.2 面向分区的操作
8.3.3 面向分区的恢复
8.4 分区的技术实现
8.4.1 基础分区的实现
8.4.2 组合分区的扩展
8.4.3 扩展分区技术
8.4.4 分区表的数据压缩
8.4.5 查看数据存储位置
8.4.6 分区键数据的改变
8.4.7 分区方式选择问题
8.4.8 使用分区顾问工具
第9章 索引定义:索引设置与执行计划
9.1 索引对象
9.2 Oracle优化器
9.2.1 优化器的选择
9.2.2 优化器的设置
9.2.3 数据扫描问题
9.3 索引的技术指标
9.3.1 索引的选择性
9.3.2 索引的簇化率
9.3.3 索引二元高度
9.3.4 直方图的使用
9.4 索引与SQL优化
9.5 避免索引不作为
9.5.1 非等式运算
9.5.2 Null值的比对
9.5.3 函数的调用
9.6 创建虚拟的索引
9.7 创建压缩的索引
9.8 索引的使用监测
9.8.1 创建不可视索引
9.8.2 索引的可用状态
9.8.3 监测索引的使用
9.9 对分区表建立索引
第10章 实例效率:识别数据库内部作为
10.1 研究数据库运行效率
10.1.1 定义和量化性能
10.1.2 统计分析的要素
10.1.3 性能状态的统计
10.1.4 其他相关统计
10.2 操作系统的使用方法
10.2.1 性能监视的手段
10.2.2 使用vmstat
10.2.3 使用iostat
10.2.4 使用sar
10.2.5 使用nmon命令
10.3 调整计划探讨
第11章 优化践行:数据库层面的优化
11.1 Oracle自动统计
11.1.1 统计数据的解释
11.1.2 汇总的统计数据
11.2 使用AWR
11.2.1 在OEM中访问AWR
11.2.2 用API管理AWR快照
11.2.3 使用度量基线
11.2.4 AWR工作报告
11.3 使用ADDM
11.3.1 ADDM内部结构
11.3.2 ADDM使用示例
11.3.3 ADDM环境设置
11.3.4 ADDM手工获得
第12章 优化践行:操作系统层面的优化
12.1 平台的性能相关性
12.2 分配和调度内存资源
12.2.1 使用大的内存页面
12.2.2 设定内存替换阈值
12.2.3 设定内存空闲阈值
12.2.4 对应设置应用内存
12.3 设置系统进程资源
12.4 系统IO资源的使用
12.4.1 优化使用异步IO
12.4.2 优化文件系统挂载
12.4.3 优化应用IO模式
12.5 关闭系统中无用的服务
12.6 监控主机资源使用
12.6.1 服务器性能监控
12.6.2 分析系统的性能
写在最后

章节摘录

第1章综述:优化是一个系统工程1.1  性能问题是一个系统工程1.2  性能改进的工程方法面向数据库系统性能的系统工程本章将着力于阐述本书所倡导的一个基本技术观点—性能优化是要在全系统范围内考虑的一个系统工程。众所周知,性能是涉及范围广泛的一个综合性问题。面对性能问题,有时候用户看到的仅仅是一个表象:“慢”!事实上,这个词太过含糊,其背后所涉及的问题可能包括:哪台机器“慢”?哪个业务“慢”?什么时候“慢”?什么操作“慢”?谁操作时“慢”?……那么,我们就来尝试解决这个含糊的“慢”的问题。现在站到服务器边上,看看机架上纵横交错的连线,还有那如繁星般闪烁的群灯,然后问自己:“这个家伙到底哪里出了问题呢?”也许我们会考虑到如下一些方面:可能是CPU过载了?一定有这可能!是内存调度颠簸?一定有这可能!网络传输出现瓶颈?一定有这可能!磁盘系统访问延迟严重?一定有这可能!I/O通道有硬件问题?一定有这可能!内存泄露资源耗尽?一定有这可能!系统出现Bug?一定有这可能!业务数据量太大?一定有这可能!用户连接太多了?一定有这可能!用户正在执行某报表业务?一定有这可能!用户正在执行备份?一定有这可能!业务系统模块改变?一定有这可能!   中间件系统的问题?一定有这可能!   某些我们“尚不知道”的可能?一定有这可能!对于上述的诸多可能,如果要尽述其细节,可能会列出数百种,甚至更多!假如我们能够列出一份排除清单,并逐一排除,相信很快就会发现一个基本的事实:我们已陷入了一个“问题”的海洋,并且难以自拔。    我写上述文字的目的不是想制造一种技术上的白色恐怖氛围,而是想说明一个技术观点:没有行之有效的方法,不掌握解决问题的规律,那么事倍功半是必然的!    也就是说,技术实现是有其规律的,这里冒昧地将科学泰斗钱学森的“系统工程”理论引用到性能优化这样的工程实践中来,全面系统地看待问题,找到方向,细粒度地解决问题,获得工程收益。

媒体关注与评论

数据库系统的性能优化一直是困扰企业和DBA的一个大难题,因为它是一个复杂的系统工程,不仅与服务器系统、存储系统、网络设备等硬件关系密切,而且它也与操作系统、中间件系统等软件关系密切。更为复杂的情况是,不同企业的应用场景和不同数据库操作人员的使用方式都是极度个性化的,他们所面临的性能问题也会是个性化的。面对错综复杂的系统环境和高度个性化的用户需求,当数据库出现性能问题时,我们究竟应该从何处着手?有没有普遍适用的方法论? 文平老师是国内Oracle数据库领域的顶级专家之一,在该领域潜心研究和实践近20年,他用系统化的思维方法总结出了Oracle数据库系统性能优化的方法论,而不只是专注于解决某些具体的问题,从技术层面上升到了艺术层面,是该领域难得的一本经典之作。——ITpub技术论坛

编辑推荐

《Oracle数据库性能优化的艺术》编辑推荐:资深数据库专家、UNIX系统专家、系统架构师近20年一线工作经验结晶,高屋建瓴,指导性强;用系统化分析的方法,从系统工程的角度深入阐述了具有普遍意义的数据库性能评估与优化的思维方法与工作流程。

名人推荐

本书从系统工程和实践艺术的角度,阐释了数据库这一典型技术领域里的各种奥秘、招式和方法论。无论是过去,还是现在,应用系统的核心问题都是性能问题,而性能问题很大程度上又是数据库的性能问题。所以,一直以来,数据的性能库调优都是热门话题,备受关注。本书颠覆了同类书遵从Oracle官方文档(尤其是OCP教材)体系的写法,从性能优化问题现场的角度,从一线工程师怎样解决问题的角度,从用户看待性能瓶颈的角度,从架构设计的角度多视角进行阐述,使到本书极具现场感和实践感。本书是作者多年一线工作实践的精华,也是作者对多年来积累的优化心得的有感而发。个人一直认为,只有那些用心去写的书,投入了作者感情的书才是好书,而本书正是这样的一部作品,值得向广大读者推荐。    近年来,由于存储设备的单位成本以惊人的速度下降(1G硬盘空间的成本现在只需要几美分,这在过去难以想象),使得我们可以用更低的成本存储大量的数据。电信 运营商,可以记录用户通话、短消息、无线上网产生的每一条信令,省级运营商每小时写入存储设备的数据量就可以达到几百G。电子商务网站,可以记录用户的每一 次交易,甚至每一次点击,可以复原用户的完整访问路径,从而找出用户的兴趣点。在生命科学领域,对人体的DNA分析,一个个体就能产生几个G的数据,可以想象如果 一个生物信息数据库里包含了数以亿计的个体数据,信息量将会是怎样一个规模,如此等等,不胜枚举。毫无疑问,我们正处于一个信息爆炸的大数据时代。以 Oracle为代表的关系数据库诞生已经有30多年时间,经过这几十年的积累,很多应用的数据量已经非常可观。作为这些数据的载体、容器,数据库承受着日益 增长的压力。对于存放这些数据的数据库的关注,被提到了一个新的高度,这完全是系统需求使然。而系统需求,即为用户需求,基于性能优化目标的海量数据库设计,不可避免 地变成系统设计中的一个新领域。如何面对海量数据给存储、查询速度、灾备等方面带来的压力,是每位数据库工程师所必须面对的课题。希望本书在此领域可以起到抛砖引玉的作用。ITPUB创始人 黄志洪于中山大学海量数据与云计算研究中心

图书封面

图书标签Tags

评论、评分、阅读与下载


    Oracle数据库性能优化的艺术 PDF格式下载


用户评论 (总计29条)

 
 

  •   这是一本不错的书,介绍整个oacle的结构,从硬件和软件的应用层方面来分析数据库,贯穿了整个数据库的架构,怎样才能达到最优化
  •   优化数据库的思想
  •   实用书籍,数据库类实战详解
  •   本书一个经验丰富的DBA的各项生产经验的总结,对于性能调优具有很好的领悟力,看了之后拓宽了思维,不错.
  •   我一直关注文平老师的著作,作为学习者,追随专家分享的经验是一种好的努力方向。本书的内容不错,值得好好学习。
  •   最好有网络服务器管理经验+DBA技术背景读起来效果更好。
  •   文平作家的书买过几本,确实惊艳很丰富,最近刚买这本书阅读,阅读了前面部分,感觉非常不错。当然适合已经在做DBA的人群。
  •   学习中,说的不错,需要有一定经验
  •   按着书本慢慢尝试
  •   看了一定要与实践结合才有用。
  •   现在新上的系统已经采用Oracle数据库了,学学优化是很有必要的。所以就买了。不过,还没来得及看。
  •   正在学习中,对优化做了整体的介绍
  •   作者在架构方面讲的比较多,可惜我现在还理解不透彻啊
  •   刚收到书,先扫了一遍,还不错,具体咋样,等回头好好学习学习
  •   这已经是买的第三本文平老师的书了,很不错,值得一看。
  •   工具书,待验证
  •   只是总体做一个参考性质,实际场景中可以做参考。。
  •   适合工作过一段时间接触过产品的人学习。
  •   还没怎么看,是个综合的总结性的东西,要有一定的基础
  •   基本看完了,说得比较全面,但要践行还要一段时间。
  •   书已经看完了,对数据库优化的知识讲解的很全面!而且是国内专家写的,更加适合国内的读者!
  •   包含了实践中的优化的方法和技巧,排版也比较好,读起来很顺!
  •   精装书 质量不错 (ps:可能沈阳这边买的人少 正版都卖不完 没必要印X货)内容大致看了适合有基础想进阶的用作者的经验给自己充充电
  •   讲解很详细,内容详实,信息量对我自己而言较大
  •   文平的书都很不错
  •   oracle优化方面的参考书籍
  •   用的不错de,挺喜欢的,不错。
  •   看看思路
  •   目录还可以
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7