 |  |  |
本书侧重在数据库的性能调优。而性能调优是一个系统工程:全面监控分析操作系统、I/O 性能、内存、应用及数据库才能快速找到问题根源;深刻理解 DB2 的锁及并发机制、索引原理、数据库参数、优化器原理、SQL 语句调优等内部机理才能有针对性地快速提出解决问题的方法;快照、db2pd、db2expln 及事件监控器等等则是必须要熟练掌握的工具。本书正是覆盖了性能调优所需要的全部领域,并提供了大量的性能调优的实际案例。
本书系统性地总结了 DB2 数据库的性能调整的方法、流程、思路和保持系统良好性能的注意要点。最后,与读者分享了我 10 年积累的 DB2 性能调优案例和经验总结。本书所讲内容适用于 DB2 V7、V8 和 V9.5 的所有平台。
本书特色:
- 从全局的角度 ( 操作系统、存储、数据库设计和应用 SQL) 来讲解如何调优。
- 本书将基本概念、深入研究、性能监控、调整案例等相关内容,按照每章一条主线展开,从而使读者通过每章的阅读,能够对相关知识有一个纵向的深入认知。
- 本书性能问题基本上涵盖了实际工作中 90% 的性能问题,具有重大参考价值。
- 本书是作者 10 年积累的 DB2 性能调优案例和经验的总结。
阅读本书的目录及样章|更多图书>
|
在介绍本书前,我先讲讲我的数据库学习之路。我在 1999 年刚刚开始念硕士时就给自己确定了以后的发展方向,当时定了两个:网络和数据库技术。因为 2000 年时,网络特别红火,拥有 CCNP、CCIE 认证的特别牛。所以自己也考了 CCNP 证书,但是到后来我发现网络有很多是硬件层面的东西,对厂商的依赖特别强,而且面特别窄。所以慢慢地就把这个方向放弃了,而我喜欢钻研,就选择了数据库技术。在确认好数据库这个方向后,我深入地学习了数据库理论方面的知识,我记得中国人民大学王珊教授那本《数据库系统原理教程》一书我读了几十遍。在对数据库理论学习的同时,我也开始对 DB2 和 Oracle 进行深入学习。
我是从 1999 年开始使用 DB2 V5.2 的,那时因为我导师做一个课题需要用到 DB2 数据库。那时市场上关于 DB2 方面的技术书籍几乎没有,互联网还不像现在这么发达,自己只能依靠查看 DB2 随机文档来学习。那时,我利用自己兼职帮别人做一些小软件和课题的费用去考 OCP 认证和 DB2 认证。其实我认为考认证是一个很好的外界动力来促使自己学习,因为考试需要花费很大一笔费用,如果不想浪费钱就只能拼命地看书。这是一个很大的促使自己看书的外界动力。那时读研究生有的是时间,所以在 2000 年我就把 OCP 8i 的认证通过了,后来又陆续通过了 DB2 V5.2 的认证。这些认证通过后能很大地增强自己的自信。当时我同时帮导师做应用程序开发工作,那时用 PB、Delphi 等编程工具。在开发中我有意识地增强自己对 SQL 的学习,这对我后来的性能调优非常有帮助。因为我很多时候在客户现场看到同样一个操作,本来在数据库中利用函数或者其他高级 SQL 可以实现的,而开发人员却频繁地在数据库和应用程序之间进行切换,殊不知,在过程层 ( 程序 ) 和数据库层反复上下文切换交互会显著影响应用效率。我认为自己应该是国内写 SQL 水平比较高的人,呵呵。所以,首先要有一个清晰的方向和规划,然后有意识地去往这个方向努力。做好一个时期的人生规划非常重要,它是你努力的方向,因为积极的学习比被动的学习效率要高太多。
机遇偏爱于有准备的人。记得 2001 年初的时候我在网上看到一个帖子说要找一个人去安装 DB2 数据库,差旅报销,每天 500 元。那时我就喜出望外,因为需要有 DB2 认证才能去,而我那时 DB2 系统管理、应用开发的认证都有,所以很快就通过了。后来就去了客户现场,到了以后才发现不是安装,而是去给客户讲课,当时我就傻眼了,因为讲课需要的远比安装配置要难得多,而之前我没有讲过课。没办法了,只能前一天夜里看教材备课到凌晨 5 点,睡两个小时,8 点半去讲课,就这样 4 天讲课,我每天都是休息 3 小时左右。还好自己毕竟使用过 DB2,而且也过了 DB2 认证,还是有基础的。这次讲课虽然不太成功,但是毕竟通过了,勉强可以打 60 分吧,没想到这次培训竟是我以后几年培训生涯的开始。经过这次讲课后,我也看到了自己的差距,知道仅仅拥有认证是不行的,因为客户问的很多问题,书本上是没有的,说明自己还需要进一步努力,而且自己看书有些概念虽然不太懂也不会太深入研究,但是如果讲课你就自己必须把一些原理概念弄清楚,所以这需要对数据库有更深入的学习。
后来经过一些其他的渠道,IBM 培训部知道我能讲 DB2 并且有相关证书,就找我讲 DB2 系列课程。所以从 2001 年开始,我就经常作为 IBM 官方讲师开始讲 DB2 系列所有课程。我感觉到讲课是个很好的学习过程,因为讲一些内容,你首先自己要搞清楚,这对提升自己有很大的帮助,我把课堂学员问的实际产生的问题自己深入地研究。我自己对培训有这样的认识,我是希望学员在这里听你讲 3 个小时要远远胜过自己看 3 个小时,而且如果把讲一堂课的内容比喻一杯水,那么老师至少应该储备一桶水,才能驾驭。所以,我在讲课准备过程中,精心准备实验,深入和学员交流。争取把一些概念能够用浅显易懂的例子来讲解,而要想做到这些,首先自己必须对这个概念有深刻的理解。所以这在客观上促进了自己的学习。
随着培训的增多,也有一些客户找我去做一些实际的调优工作。我记得第一次去客户现场调优是 2001 年去大连大通证券,当时主要解决锁等待问题。客户环境用到了 AIX 和 CICS 环境。当时虽然问题解决了,但自己心中还是感觉到比较虚,因为对 AIX 和 CICS 不了解,万一如果是这两个方面有问题,自己就没办法搞定了;同时认识到一个复杂系统的调整往往不是单方面的,需要具备全面的知识。经过这次事情后,我就在网上买了一个 140 的 IBM 工作站小机,自己安装 AIX,开始学习 AIX 。这个期间我一边学习,一边把 AIX 的认证全部过掉。我记得非常清楚,为了做 HA 的实验着实费了很大的功夫,因为无法搞到 7133 阵列,那时小型机不像今天这么普及。后来自己又学习了 CICS、WebSphere、MQ 和存储,所以我认为有目的的学习,有压力和动力的学习效率是非常高的。就这样,在我培训的过程中,我发现自己哪个方面薄弱并且这个方向有前途,我就开始学习,不过那个时候我的技术主要以 IBM 为主。由于自己对培训比较用心以及客户的好评,开始找我做培训的国内培训机构开始变多,也感觉到这个期间自己的技术水平增长很快。
2002 年 11 月,我参加首届“ IBM DeveloperWorksLive! China 2002 ”大会,并获得 IBM 首次在国内评选的“杰出软件技术专家”奖,在 6 名获奖者中名列第 2 。获得这个认证后对我有很大的帮助,因为找我的人更多了,所以 2002、2003 年是我技术提升最快的两年,在这两年我又陆续学习了 HP-UX、WebSphere 和 MQ 并通过了认证。其实我有时感觉到如果你把一门技术研究得非常深非常透,这时你再去学习另一门技术,就非常轻松,因为技术是触类旁通的。我在学习完 AIX 再去学习 HP-UX 就感觉非常轻松。同时,在学习 Oracle 和 DB2 后再去学习 Informix 感觉到很容易。通过这种纵向的深入和横向的比较,就会思考它们的区别,就能够发现每一个产品的尺之所长、寸之所短,这样技术视野更加全局。在学习过程中,不断地把实践和理论结合,不断地补充理论来充实自己,知其然知其所以然。而且通过对一个产品的深入,往往能够发现这个产品的缺点和需要改进的地方。就拿 DB2 来说,它的每次版本更新的新特性我基本上在新版本没有出来之前就猜得差不多了。因为一是我是贴近真实用户的,了解他们的真实需求;二是自己一直在用,自己不断地总结思考;三是别的数据库有,而 DB2 没有,那么在下个版本就会增加。所以相对来说,对新版本的新特性学习就非常轻松了。
就 DB2 而言,我是国内拥有 DB2 认证最多的人,我拥有 DB2 V5.2 、V7.1、V8.1 和 V9 的全部认证。我是国内第一个把 DB2 V8 认证全部通过的人,当然这也是巧合,因为 2003 年 3 月非典我被困在深圳,在网上看到 DB2 V8 认证从 4 月 1 日开始考,就在前一天报名注册,第二天把 DB2 V8( 新特性、高级 DBA、应用开发、BI 等所有认证 ) 全部 pass 。
2004~2005 年基本上是我最忙碌的两年。那个时候找我讲课的培训机构以及性能调优的客户非常多,一年我基本上天天在天上飞 ( 当然学校导师那边我是有办法搞定的 ),培训机构找我讲课常常需要提前一个月预约时间。那时除了过年在家几天,其他时间都是在做培训和诊断调优等,足迹踏遍国内主要城市。那时我基本上是国内六大行开发中心和数据中心培训的指定老师,只要时间不冲突,还为北京银信科技、山东农信、广东农信、交行大集中 IBP 等项目做数据库技术顾问。那时年轻很有精力,我记得有一次是 2004 年 9 月,我白天上午 9 点为上海移动 IT 部门做 AIX 动态逻辑分区 (DLPAR) 的培训; 17 点打车前往扬州,20 点到达扬州供电局协助他们进行电力负荷控制系统项目上线,彻夜奋战到凌晨 3 点半;然后连夜打的赶往上海,凌晨 6 点到达酒店;休息两小时,8 点出发,准时出现在上海移动培训现场。那时我对报酬不太在意,我想的是拼命积累技术和客户资源,不断对技术学习、钻研、思考、提高,以及不断向上成长和孜孜不倦的探索,我就是这样在不断的学习、积累以及实践中成长起来的。
在很长一段时间内,我不断奔波于国内的各个城市,不计较出差、报酬,在我看来能够不断通过实践让自己成长是第一要义。而且去的客户现场越多、处理的问题越多,就越发现自己的不足,然后就拼命地学习,不断地积累、总结和思考,这样就进入了一个良性循环。至今我仍然怀念那种充实、紧张和激情的黄金年代。 2004 年和 2005 年,我分别在上海、北京注册了公司。一方面因为以独立咨询顾问的个人身份无法出具发票;另一方面,随着项目越做越大,尤其是很多银行的数据库架构和维护项目涉及合同金额也越来越大,需要签订合同,以公司的身份来签合同更加合适。当然这些年并非所有都是一帆风顺,也犯过一些重大错误。例如,我曾经在 2002 年 5 月 1 日把某机场的数据库调死,导致机场航班信息管理系统瘫痪;早期也曾经把证券系统因为调整而宕机。这些都对客户造成了重大影响,同时也让我思考总结自己的不足。也许这是成长必须要走的路。所以,经过这两次事件之后,我之后的调优基本上没有犯过错误。
2006 年 8 月我获得“ 2006 年中国首届杰出数据库工程师”称号,也算是对我这么多年学习数据库的一个总结吧。 2007 年开始,我专注于做一些大客户的运维,相应就减少了培训的次数。 2008 年我被建设银行以 217 万年薪聘请为资深技术专家来维护 Oracle 和 Informix 数据库。做技术而言,以一己之力能挣到年薪百万这常常是我感到自豪的地方,也是让我感觉到技术的魅力和自己这么多年对技术钻研的认可。
阅读本书的目录及样章>
|