前言

为什么要写这本书

十多年前笔者就打算写一本Oracle数据库性能优化方面的书,屡次都是在提笔写了几行字后就放弃了。近几年,随着Oracle数据库的普及和水平的不断提高,国内出现不少Oracle数据库方面的高水平作品,相当多的作品都涉及了性能优化方面的话题。但是几乎所有作品都只是讲解了性能优化相关的知识和经验,对于优化思路和方法很少涉及。作为性能优化方面的“老兵”,始终认为优化思路和方法要重于知识和经验,只要有适当的优化方法论指引,性能优化甚至可以成为Oracle数据库领域相对简单的业务。

近几年,随着美创科技公司开创并实践的基于流程、资源和组件分析的性能优化方法论的成熟,笔者比以往有了更大的动机来完成本书,期望它可以在Oracle性能优化史甚至整个数据库性能优化史上留下印迹,让广大的Oracle数据库使用人员和从业人员可以更加简单地完成Oracle性能优化工作,而不仅仅是个别高级DBA的专利工作。

读者对象

对于读书,笔者始终相信一本书只要有几句话可以对读者有帮助,那么这本书的价值就可以得到体现。作为优化方法论类相关的书,一般阅读起来会显得枯燥,尤其是对于初学者,甚至可能会比较困难,但是只要保持耐心,相信读者一定能够获得收益。本书适合以下读者:

❑ 中高级Oracle DBA

❑ 中高级其他数据库的DBA

❑ 性能优化从业人员

❑ 数据库架构设计师

❑ 数据库开发工程师

❑ 容量规划工程师

❑ 对于性能优化保持兴趣的数据库从业者

❑ 曾经遭遇性能障碍的数据库使用者

如何阅读本书

本书分为四大部分:

第一部分为漫谈篇(第1~2章),简单地介绍了性能优化领域的一些特征、误区,以及性能优化方法论的发展。

第二部分为流程篇(第3~4章),详细地讲解了数据库登录和数据访问处理流程,该篇通过流程的输入和输出以及流程分解来描述流程,从而帮助读者加强流程认知,进而实现流程优化。

第三部分为资源(硬件资源)篇(第5~9章),分别讲述了CPU、内存、I/O、网络等硬件资源的输入和输出特征,以及优化的主要方法。

第四部分为资源(并发性资源)篇(第10~14章),分别讲述了队列锁、row cache lock、library cache lock、buffer lock、latch、mutex等不同并发性资源的作用场合、输入和输出特征,以及优化的主要方法。

由于篇幅所限,优化方法论包含的重要组成部分“组件”并没有包含在本书内容之中。

建议按照顺序阅读本书,当然读者如果仅仅是为了了解某个特定领域的知识,可以不用理会本书的章节顺序,选择自身需要的内容阅读即可。作为优化方法论类图书,本书不是一次性阅读的快消品,需要多次阅读。由于本书在某些地方涉及了一些其他作品所不具备的细节,也可以作为一本案头书,必要时可以查阅。

勘误和支持

除封面署名外,美创科技技术服务部对于本书的编写提供了很大的支持,特别是周亮、姜宜民等人。由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱liuzl@mchz. com.cn,期待能够得到你们的真挚反馈。

致谢

首先要感谢我的夫人陈尚礼,她的支持和鼓励使我没有中途放弃本书的写作。

感谢美创科技技术服务部的同事们,他们提供了大量的性能优化案例使本书内容更加充实。特别是潘敏君和应以峰,我们一起合作完成了本书。特别感谢周亮,每个章节完成后他都在第一时间进行了校对和纠正,在通篇完成之后又花费了大量时间来进行校对和修订。

特别感谢机械工业出版社华章公司的编辑杨绣国,是你的耐心和鼓励才得以让本书完成。

最后感谢我的女儿,是她时不时地几句“书写完了没有?”让我抓紧把书写完,不至于中途放弃。

谨以此书献给我最亲爱的家人,以及众多对于Oracle数据库性能优化领域感兴趣的朋友们!

柳遵梁

2015年9月于中国杭州