本书已经进入最后的编辑阶段,应该很快与读者见面,这本书在我手中翻译的时间持续了2年多的时间,由于本人的能力有限,书中难免有错译漏译,难免有很多不如人意的地方,希望大家谅解。
前言
性能一直是数据库面临的主要问题,Oracle也不能例外。作为执行大量磁盘IO和数据处理的应用程序的一部分,通常,数据库都是影响应用程序吞吐量的制约因素,是影响应用程序响应时间的决定因素。数据库的性能管理与数据库代码调优,也将是数据库专业人员的一个高优先级的事情,无论是现在还是将来。
最近几年,数据库性能优化的重要性一直在增加。传统意思上来说,性能调优主要偏重于满足商业服务水平的目标上,这些目标包括应用程序的吞吐量与事务的响应时间。在互联网繁荣(爆炸)的年代,与时间相比,我们在性能问题上可以投入更多的钱,通过添加硬件经常是提高性能的最快的途径。然而今天,这种情况发生了很大的变化。
无论是基本面看,还是从IT预算方面看,经济都在发生着变化。商业机构尽可能地寻求减少IT资产的总成本,包括硬件开支、软件许可费用、IT薪酬和电力消耗成本。花钱来为性能问题买单基本不太可能了,而且这也不能产生经济利益。
减少能量消耗,尤其是电力消耗,也是企业不断增强的社会义务。运行繁忙的数据库服务器消耗的电力不仅需要花钱,也产生了环境成本。一个差的没有调优的数据库就像一辆逆火和冒着烟的状况不佳的汽车。它或许可以把你从A载到B,但是它将花费你更多的汽油,并对环境产生更加严重的代价。
网格和效用计算正在变成现实。在网格和虚拟化技术出现以前,从一台数据库服务器上节省的IO、内存或CPU不太容易被其他的数据库服务器使用。今天,把一台数据库服务器上节省的资源拿到另外一台数据库服务器或者非数据库服务上冲用,正在逐渐变得可能。
因此,尽管把性能调优的努力集中在商业服务水平的目标上仍能是正确的,但是通过减少能量消耗,性能调优也为商业盈利能力做出了贡献,对社会和环境的责任产生了附加的价值。我们既有商业责任,也有社会责任来确保数据库以最高效的方式运行。
作为一个图书爱好者和一个坚定的Oracle技术人员,我曾经买了很多极好的Oracle技术图书。我收藏的一些图书被列举在参考书目中。已经有了这么多好书,为什么还要再写一本?
就我而言,我仍然需要一本提供了系统、全面并易于理解的Oracle调优方法的书,一本涵盖Oracle性能管理的所有方面的书。涉及了Oracle调优必要知识的书、适合专业技术的所有级别和覆盖了所有相关的原则的一本“生存手册”的书,这本书能够引导完成大多数性能管理的挑战和机会。
因此,在写本书时,我制定了下面的这些目标:
尽可能用最系统有效的方式阐述性能问题,为Oracle性能调优提供一个结构化方法。
从应用到数据库设计,以及通过SQL调优、争用管理和针对内存和物理IO的管理等角度来解决Oracle性能管理的所有方面的问题。
在提供技术深度和广度的同时,保持对调优的基础原理的强烈关注。关注基础原理,通常可以获得最大的性能调优收益,如果不解决,通常会限制应用高级技巧可获取的收益。
为Oracle调优初学者与具有丰富实践经验的调优人员提供可利用的内容
本书适用于对提高Oracle数据库或者数据库的应用感兴趣的任何人。包括应用架构师、开发人员和Oracle数据库管理员。并不是本书的所有章节都能让应用架构师与开发人员产生兴趣,比如,他们很少有机会决定磁盘存储阵列上Oracle数据文件的分布。类似地,数据库管理员们(DBAs)经常会参与性能调整的所有方面,但是很少会参与应用设计。这些人员分组里的每一个人,都有可能选择跳过本书的某些章节,他们对性能的这些方面没有控制权。然而,我要着重强调我在本书的观点,在缓解系统症状前,专注于解决导致性能问题的根本原因。在本书的后续章节中(例如:磁盘IO调优),我们假定你们已经处理了前面的章节中已经列出那些行为(例如:调优SQL)。
为了使对Oracle不太熟悉的新手容易理解本书,我将简要介绍并定义一些关键概念和Oracle的体系结构。然而,我假定大部分人熟悉Oracle和SQL语言。
本书是如何组织的
在第1章“Oracle性能调优:一种系统化方法”中,围绕分层调优的概念,我提供了调优方法论的基本介绍。这种方法论提供了一种针对Oracle性能优化的有效的、系统化的方法,关注于优化根本原因、而不是外在的症状,这可以最大化调优投资的性能回报。本书大部分围绕这种方法论来组织,包括下面的主要章节:
第1部分:方法、概念和工具,第1章到第3章,描述性能调优的方法论,提供了最有效的优化Oracle数据库的方法。我们还关注跟踪、监控和诊断Oracle数据库性能的基本工具和技术,同时也对Oracle数据库的体系结构进行了概述。
第2部分:应用和数据库设计,第4章到第6章介绍应用和数据库设计。这些章节涵盖数据库的逻辑和物理设计、索引设计、事务设计以及Oracle API的最佳使用。
第3部分:SQL和PL/SQL调优,这部分由第7章到第14章组成,覆盖了SQL语句的优化。SQL语句调优通常贡献绝大部分的数据库性能提升机会,并且应该在对数据库服务器调优之前优先被处理。我们也关注利用并行SQL和PL/SQL代码的进行调优的方法。
第4部分:最小化争用,从第15章到第17章讨论了争用的多个方面。Oracle数据库资源的争用,比如:锁、闩锁和共享内存,限制了数据库处理应用程序发起的请求的能力。通过减少争用,我们可以增加了数据库处理应用程序的请求量。
第5部分:优化内存,从第18章到第20章介绍通过最优化内存配置来提升性能。内存优化减少了产生物理IO的逻辑IO的数量。因此,优化内存是数据库服务器性能中的一个根本因素。
第6部分:IO调优和集群,从第21章到第22章讨论了物理磁盘IO。我们为避免磁盘IO而竭尽所能了。现在,该是优化剩余的磁盘IO的时候了。在这节里,我们关注如何配置Oracle和磁盘IO子系统来降低IO负载,以及如何提高IO吞吐量。
第1章到第22章既可用于单实例Oracle,也可用于RAC系统。然而,RAC的确引入了一些特有的考虑,我们将在第23章“优化RAC”中探讨这些。
关于示例和样本数据
在本书的讨论中,经常使用到几个脚本来报告数据库性能的某些方面。可以通过本书的站点(http://www.informit.com/store/product.aspx?isbn=0137011954. You)下载这些脚本。还可以访问我的站点(http://www.guyharrison.net)与博客查找一些其他的资料。
贯穿本书,还将看到为了描述各种调优原则的SQL语句和PL/SQL程序的例子。在本书的任何地方,这些示例都采用标准的Oracle数据样本用户,可以在创建数据库时安装这些样本用户,也可以在以后手动安装。B10771-01(Oracle 10g)或B28328-01(Oracle 11g)的手册中有对这些用户的详细描述,可以在http://technet.oracle.com获得这些图书。
有些案例中,某些样本表中的行记录数太少,以致无法有效地描述特定的SQL调优或者其他的类似场景。由于这个原因,我写了一个过程来增加CUSTOMERS和SALES等关键表的大小。可在本书站点可用的脚本包里找到这些PL/SQL包。
本书全面覆盖了Oracle 10g和11g版本,包括Oracle 11g 发行版本2。某些引用偶尔会使用Oracle的早期版本,但本书中使用的所有示例都可以在Oracle 10g或Oracle 11g数据库中使用。
在本书将要出版时,Oracle 11g 发行版本2仍处于beta状态。在Oracle 11g发行版本2的正式发行版本里,可能会有一些细微的行为变化。如果这种情况发生,我将在本书的站点和我的个人站点中予以说明。
关于Quest软件和Spotlight
我在Quest软件公司从事Oracle技术相关的工作,这占了我的21年职业生涯的大半时间。在Quest时,我一直深度介入了许多Oracle开发和管理工具的开发,但是,主要还是集中在Spotlight on Oracle和Spotlight on Oracle RAC软件上。我认为Spotlight极好地涵盖了Oracle性能管理的一个方面,我已经谈过这个特性并且有时会提供一个屏幕快照。因为我既是Spotlight的架构师,也是本书的作者,你可以假定Spotlight代表了本书提及的许多原则和实践,而且我肯定鼓励大家下载和试用Spotlight。然而,鉴于Spotlight是我的心血付出,当涉及到Spotlight或者Quest的任何软件产品时,我几乎不可能没有任何偏向。
致Oracle SQL High Performance tuning的读者
自Oracle SQL High Performance Tuning的第2版出版到现在差不多有8年了,我仍能经常收到编写此书第3版的要求。那些认为Oracle SQL high Performance Tuning图书有价值的人,应该会发现这本书完全可以取代此书的第3版。在本书中,我延续着Oracle SQL High Performance Tuning的严谨务实的方法,而且对Oracle性能管理的原理进行了更加广泛的延伸。在本书中,仍然保持着对SQL调优的关注,但是,是在一个更加宽广的范围,包括应用程序、数据库设计、数据库服务器配置和优化。
Related posts:

啥时候出版啊,坐等此书。
这本书应该在8月份就可以在市场上出现,谢谢关注。