Oracle DBA手记 3:数据库性能优化与内部原理解析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

春风化雨 润物无声

——《Oracle DBA手记3》编辑始末

在这样一个春暖花香的季节,我完成了本书的编辑工作,希望这本书到达读者手中时,仍有着这个春天的气息。

本书是《Oracle DBA手记》系列的第三本,也是我的梦想的延续。源于最初的一个念头,结果就是数载的不停不懈,我常常鼓励自己:坚持一下,再坚持一下。也正因为如此,我才能够一步一步地走到今天,也就有了DBA手记之三。

这本书中收录了我的一篇文章,其中讲述了在2010年遇到的一个案例,那是我职业生涯中遇到的最为复杂的一个项目,在诊断过程中,我几乎调动了自己所知的所有知识,并进一步地灵活运用,最终帮助客户解决了纠缠多年的性能问题。记得最初在微博上说,这个案例就足够写一本书了,当时周老师紧跟着说,那就交给我出版吧。时过境迁,周老师已经离开博文视点,去开创自己的出版事业,而我在接二连三的项目中,也失去了最初奋笔疾书的热情,所以就零星写成了这篇短文,将这个案例中学到的一些知识与大家分享出来,只是没有更进一步去细化当时的曲折和细节了。生活和技术都是一样的,想到了就要做,否则就可能由当初的熊熊烈火蜕化成星星之火以致泯灭,我在此充当了一次反面教材。我要感谢在这个项目中一起奋斗的朋友们,在一次次猜测、实验和质疑中,我们最终发现了真相。我很怀念那段时光和殚精竭虑的过程。

我要特别感谢冯春培同学,据我所知,当下要他落笔已经是难上加难,再加上其掌上明珠呱呱坠地,期间的欣喜和忙碌足以让他放弃其他一切琐事,而当我相约其稿时,他汇集和整理了自己多年的心路历程,冠以“人生就是如此”的座右之铭,告诫我们,人生远远不止如此。回想当年共处于同一屋檐之下,而今各已儿女绕膝,白驹过隙,沧海桑田,还真是不过如此。

崔华和熊军兄弟两人,虽然与我相识于江湖,但是我们一见如故,其各怀一身绝艺,于数据恢复领域叱咤南北,联手开拓了一片恢复沃土;老熊的ODU曾经帮助了大量网友无偿地恢复数据挽救业务;崔华不断的技术探秘,使得Oracle的种种恢复难题迎刃而解。而他们多年对我的无私支持、勤于分享也为广大技术爱好者带来了福音。今年崔华和熊军双双通过了Oracle ACE的提名,这实在是实至而名归的又一体现。

姜龙与我结识于上海,其接触Oracle之早,出入网路之先,皆让我赞叹,十数年而磨一剑,其精心总结之案例分享皆为我们提供了借鉴与崭新思路。我常说,将合适的技术应用于合适之处,即为优化。姜龙的几个案例,或借助物化视图,或借助TimesTen,或巧用同义词,皆能于平常处见神奇,大幅度优化了系统性能。他所管理的数据库极多也极重要,这些精心调整优化实际上是“字斟句酌”、履险如夷,我记得他的一个系统甚至到了加一发而弗可之地步,所以这样的优化更需要勇气和细致,而这正是一位卓越DBA的品质要求。

黄玮似乎是一位独行之侠,居于东南之地,自树一帜,而与外界绝少往来,然每发一文必如春笋发于微,惊雷动于世。其于Oracle内部原理研究之深入、剖析之透彻无不让人拍案叫绝,然黄玮之淡泊与隐忍视一切喧嚣如无物,他很少出入论坛,也极少发布技术之外的言论和探讨,他只是按照自己的步调时不时放出一些让识货者视为珍宝的文章。感谢他的慷慨付我以妙文,才有了这本书中他精彩的分享。

叶正盛是一位经验和履历都极为丰富的数据库架构师,于阿里的思考更让他时常有美文发布,结识他是因为在CSDN上的一篇文章,虽然以程序员角度出发,但是其思考之深入,涉及之广泛,配图之精妙,皆让我感叹,其角度虽曰程序员,然对所有数据库管理员和性能爱好者,皆能有如悟恍然之处;在繁华浮躁的时代,凡能静心著文者必有别样之情怀。正盛以新华字典配图,瞬间将我打动,儿时灯下伏笔、按图索骥之情景历历回在眼前,我在微博上私信约稿,正盛校订其稿,完而善之,才有书中之别样光彩。

杨廷琨在《Oracle DBA手记:数据库诊断案例与性能优化实践》(这是本系列图书的第一本)出版之际还只是我的挚友和伙伴,而现在已经是我们的同事和强劲后备。老杨是ITPUB上的“百科全书”,其知识范围之广,涉猎之深之远,一时无人能出其右。老杨之高产、勤奋也让人自愧不如,要让他从一年数百篇文章中精而选之,实非易事,但是在我再三请求之下,老杨勉为其难,汇珍珠成项串,总结手记若干,实为本书点题之作。

正因为有这么多朋友和专家的无私奉献,热心分享,才有了DBA手记之一而再,再而三。虽然本书收录的部分文章在网络上可见,虽然已经到了电子书横行的时代,但是我仍然喜欢纸面阅读,一本可以拿在手里的书给我的阅读愉悦是无可替代的。在《Oracle DBA手记2》出版的一年多来,我经常在出门时放一本在背包里,其中的很多文章我已经反反复复阅读了很多次,有时候我想,我才是这本书的最大受教者。

我希望读者们也能喜欢并从中受益,感谢你们!

根据本书的内容,我将全书分为四篇。

第一篇DBA之路

这一篇包括一章内容,由冯春培撰写。冯春培是业内著名专家,其技术与行业思考一直为业内所关注,本章就是他对多年的职业经历与行业观察的总结,真知灼见跃然纸上。

第二篇DBA手记

这一篇包括四章内容,以手记形式记录了DBA们的工作点滴、经验分享。本篇的四章内容分别由杨廷琨、姜龙、叶正盛、熊军撰写,杨廷琨的手记侧重于诊断分析,姜龙的手记侧重于以不同技术手段优化数据库,叶正盛的文章则是以程序员的角度阐析数据库内容,熊军的文章介绍了Linux下使用大内存页优化Oracle数据库的实现和原理。

第三篇SQL与SQL优化

这一篇包括三章内容,分别讲解SQL的执行计划解读、SQL Profile的使用,以及Oracle中的NULL值解析。本篇的三章分别由崔华、熊军、杨廷琨撰写。

第四篇 内部原理与优化

这一篇包括五章内容,分别介绍了Oracle的索引分裂、TX锁等待、闩锁原理、逻辑读写、隐含参数与Latch原理等的内部操作。这一篇章的内容较为深入,分别由黄玮、盖国强、熊军撰写,供喜欢探究内部原理的读者参考。

基于技术分享的目的,我和张乐奕(Kamus)在2010年创建了Oracle用户组(ACOUG—http://www.acoug.org),并且每个月在北京开展一次面对面的技术交流活动,这些活动让我们结识了更多志同道合的朋友和优秀的技术作者,感谢Kamus这一年多来的努力付出。

感谢为本书供稿的朋友们,也感谢恩墨科技的仇实、谭龙、盖国相等几位同学,他们在书稿整理、排版等方面对我提供了大量帮助。由于编者能力有限,书中难免存在不足和疏漏之处,敬请读者朋友们指正。

网络以及通过网络来到现实的朋友,永远是我无比珍视的巨大财富。

盖国强(Eygle)

2011-04-26于北京