让Oracle跑得更快—Oracle 10g性能分析与优化思路
基本信息
编辑推荐
国内第一本真正意义上从工作经验出发,以作者的心得体会全面论述Oracle数据库性能优化的书籍。
作者内心经历的表白,站在全局角度对性能做分析,而不是拘泥于具体的技术细节,呈现给读者一种新的阅读思路。
书中涉及很多新的性能话题,比如执行计划,bind peeking,并行执行,10046及10053事件,AWR报告等,基本上涵盖了所有Oracle数据库性能方面的知识。
推荐阅读
内容简介回到顶部↑
在这本书里读者将会学到作者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是作者在实践中长期积累的心得体会,当读者掌握了一些处理问题的基本思路之后,成为一名合格的dba就是一件轻而易举的事情了。
本书适用对象:oracle dba、oracle开发人员,和其他对oracle数据库感兴趣的人员。
本书适用对象:oracle dba、oracle开发人员,和其他对oracle数据库感兴趣的人员。
作译者回到顶部↑
本书提供作译者介绍
谭怀远,副总工,DBA团队负责人,在国内属于较早进入专职DBA岗位的人。是国内著名数据库论坛ITPUB的资深版主,论坛id alantany。有10年的Oracle DBA工作经验,从Oracle 8开始进入数据库领域,从Oracle 8到Oracle 8i,Oracle 9i,Oracle 10g,见证了中国DBA职业的发展历程。作者对数据库的性能优化有独到的见解,颇擅长于海量数据数据库的设计管理及优化工作。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第1章 引起数据库性能问题的因素 1
1.1 软件设计对数据库的影响 1
1.1.1 软件架构设计对数据库性能的影响 1
1.1.2 软件代码的编写对数据库性能的影响 2
1.2 数据库的设计 8
1.2.1 oltp数据库 9
1.2.2 olap数据库 10
1.3 数据库的硬件设计 14
1.3.1 存储容量 15
1.3.2 存储的物理设计 16
1.3.3 数据的安全 17
1.4 小结 19
第2章 锁和阻塞 20
2.1 关于锁 20
2.2 锁和阻塞 22
2.3 引起阻塞的其他情况 30
2.3.1 select for update 30
2.3.2 外键和索引 36
第3章 latch和等待 44
3.1 共享池中的latch争用 45
1.1 软件设计对数据库的影响 1
1.1.1 软件架构设计对数据库性能的影响 1
1.1.2 软件代码的编写对数据库性能的影响 2
1.2 数据库的设计 8
1.2.1 oltp数据库 9
1.2.2 olap数据库 10
1.3 数据库的硬件设计 14
1.3.1 存储容量 15
1.3.2 存储的物理设计 16
1.3.3 数据的安全 17
1.4 小结 19
第2章 锁和阻塞 20
2.1 关于锁 20
2.2 锁和阻塞 22
2.3 引起阻塞的其他情况 30
2.3.1 select for update 30
2.3.2 外键和索引 36
第3章 latch和等待 44
3.1 共享池中的latch争用 45
前言回到顶部↑
笔者在写这本书的时候,翻看了很多当前国内数据库方面的书籍,发现写性能优化的书并不多,特别是从工作经验和思路上来讨论性能方面的书,更是少之又少,这些因素让笔者思考要写这样一本书,这也算是这本书的一个定位。
在这本书里,你将会学到笔者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是笔者在实践中长期积累的心得体会,在笔者看来,掌握处理问题的方法和分析问题的思路在日常工作中显得更为重要,当你掌握了一些处理问题的基本思路之后,剩下的工作就是去Google或者阅读参考书了。
本书的一个特点是,凡是作者提到的观点,都尽可能地使用一些例子来证明它,这样看起来更有说服力一些。
为什么会出现数据库的性能问题
性能问题是最近几年来DBA们越来越关注的一个数据库技术领域,归根结底,造成它的原因是最近几年信息化进程的飞速发展,导致了很多系统的用户数量猛增,数据库中存储的数据量亦成几何级数激增,数据库作为数据处理和存储的最终受体,将必然直接承担这种变化导致的性能下降。因此在人们对信息的依赖性越来越强的时候,对信息使用的效率也变得越来越关注,这样数据库的性能优化问题就日益严重地压在DBA的身上。
什么时候需要对性能进行干预
itpub.net是国内最早的一个专业讨论Oracle数据库技术的论坛,目前在国内数据库方面已经相当有知名度,笔者是2001年注册的,算是最早的会员之一。目前仍然会经常上去看看,由于工作内容的关系,我比较关注性能方面的帖子,发现以下一类的帖子经常有很多,比如:
1. 我是一个DBA,我现在手头有一个数据库,我该从哪里进行性能优化呢?
2. 这是我的数据库的一个Statspack,我该如何优化?
通常对于第一个问题,我是很少回答的,并不是不屑于回答,实在是没有办法回答,如果我回答说,“你怎么知道你的数据库需要优化?”又担心这种没有实际意义的回答带有说教意味,打击别人的积极性,所以通常看看而已。实际上我是想说,对于一个DBA来讲,当你拿到一个数据库的时候,你首先需要做的是用最短的时间来了解一下跑在这个库上的是一个什么系统,比如是在线事务(OLTP)系统还是在线分析(OLAP)系统,这对于你做出性能上的判断至关重要,如果连系统都不了解,真不知道该如何去优化它,这就好比说,要设计一辆汽车,如果连用户对汽车的喜好都弄不清楚,如何能设计出一个取悦于用户的车呢?
对于第二个问题,像是比第一个具体一些,因为帖子作者已经提供了一个性能数据报告,但我仍然觉得通过这些数据没有办法准确地判断数据库是否有性能问题。比如你是一个医生,我让一个人站在你的面前测心率,结果是50次/分钟,你是不是可以断定他有问题,需要安装心脏起搏器呢?实际上是不需要,因为我知道他是一个运动员,这样的心率是正常的,而医生不知道,所以他在做出诊断之前需要详细了解站在自己面前的应诊者的所有详细信息,来作为他做出判断的依据。
下面贴出一个来自于我使用过的数据库性能报告中的一部分:
Buffer Nowait %: 100.00 Redo NoWait %: 99.99
Buffer Hit %: 66.35 In-memory Sort %: 100.00
Library Hit %: 99.63 Soft Parse %: 96.87
Execute to Parse %: 83.99 Latch Hit %: 99.87
Parse CPU to Parse Elapsd %: % Non-Parse CPU: 100.00
许多人看到这个数据一定会大声说:
“嘿,你的数据库性能好差,buffer hit只有66%,不知道是谁设计的这个系统,赶紧加大data buffer的尺寸!”
在这本书里,你将会学到笔者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是笔者在实践中长期积累的心得体会,在笔者看来,掌握处理问题的方法和分析问题的思路在日常工作中显得更为重要,当你掌握了一些处理问题的基本思路之后,剩下的工作就是去Google或者阅读参考书了。
本书的一个特点是,凡是作者提到的观点,都尽可能地使用一些例子来证明它,这样看起来更有说服力一些。
为什么会出现数据库的性能问题
性能问题是最近几年来DBA们越来越关注的一个数据库技术领域,归根结底,造成它的原因是最近几年信息化进程的飞速发展,导致了很多系统的用户数量猛增,数据库中存储的数据量亦成几何级数激增,数据库作为数据处理和存储的最终受体,将必然直接承担这种变化导致的性能下降。因此在人们对信息的依赖性越来越强的时候,对信息使用的效率也变得越来越关注,这样数据库的性能优化问题就日益严重地压在DBA的身上。
什么时候需要对性能进行干预
itpub.net是国内最早的一个专业讨论Oracle数据库技术的论坛,目前在国内数据库方面已经相当有知名度,笔者是2001年注册的,算是最早的会员之一。目前仍然会经常上去看看,由于工作内容的关系,我比较关注性能方面的帖子,发现以下一类的帖子经常有很多,比如:
1. 我是一个DBA,我现在手头有一个数据库,我该从哪里进行性能优化呢?
2. 这是我的数据库的一个Statspack,我该如何优化?
通常对于第一个问题,我是很少回答的,并不是不屑于回答,实在是没有办法回答,如果我回答说,“你怎么知道你的数据库需要优化?”又担心这种没有实际意义的回答带有说教意味,打击别人的积极性,所以通常看看而已。实际上我是想说,对于一个DBA来讲,当你拿到一个数据库的时候,你首先需要做的是用最短的时间来了解一下跑在这个库上的是一个什么系统,比如是在线事务(OLTP)系统还是在线分析(OLAP)系统,这对于你做出性能上的判断至关重要,如果连系统都不了解,真不知道该如何去优化它,这就好比说,要设计一辆汽车,如果连用户对汽车的喜好都弄不清楚,如何能设计出一个取悦于用户的车呢?
对于第二个问题,像是比第一个具体一些,因为帖子作者已经提供了一个性能数据报告,但我仍然觉得通过这些数据没有办法准确地判断数据库是否有性能问题。比如你是一个医生,我让一个人站在你的面前测心率,结果是50次/分钟,你是不是可以断定他有问题,需要安装心脏起搏器呢?实际上是不需要,因为我知道他是一个运动员,这样的心率是正常的,而医生不知道,所以他在做出诊断之前需要详细了解站在自己面前的应诊者的所有详细信息,来作为他做出判断的依据。
下面贴出一个来自于我使用过的数据库性能报告中的一部分:
Buffer Nowait %: 100.00 Redo NoWait %: 99.99
Buffer Hit %: 66.35 In-memory Sort %: 100.00
Library Hit %: 99.63 Soft Parse %: 96.87
Execute to Parse %: 83.99 Latch Hit %: 99.87
Parse CPU to Parse Elapsd %: % Non-Parse CPU: 100.00
许多人看到这个数据一定会大声说:
“嘿,你的数据库性能好差,buffer hit只有66%,不知道是谁设计的这个系统,赶紧加大data buffer的尺寸!”
序言回到顶部↑
性能优化是数据库应用的核心问题。目前的商业或开源的数据库产品,发展已日臻成熟,很少有经常发生崩溃急需修复的情形。故DBA除了日常的常规维护任务外,大多把精力花在优化数据库上。在2005年的时候,ITPUB也曾出过一本《Oracle数据库性能优化》(盖国强、冯春培、叶梁、冯大辉主编)的技术书,颇受Oracle DBA们的欢迎。现在很高兴地看到在ITPUB技术丛书里又增加了一本关于数据库优化知识的书籍。
ITPUB于2001年9月26日成立的,已发展为国内最大的数据库技术讨论社区。本书作者谭怀远先生则是在2001年9月28日加入了ITPUB,相交至今将近九年时间。他在这么长久的时间,长期工作在数据库业务的第一线,积累了大量丰富的经验,也形成自己独到的见解。而这些见解,又大部分体现在本书的文字里,本书既是知识的归纳总结,同时又是个人技术感情(恕我在这里使用了一个创新的词汇,大多数长期从事技术工作的人,都有一种有墨在胸,不得不发的感觉)的抒发。纵观全书,我个人对作者所说的“最难的东西不是技术本身,而是什么时候该用什么技术”深表认同。当DBA从烦琐的日常工作脱身出来,举目远望的时候,再往前的一片田野便是架构问题,最好的最彻底的,能一劳永逸的优化,往往从架构设计开始。期待怀远君将来的新作,可以在这片更广阔的天地里驰骋。
我感到本书最大的一个特点在于,作者通过自己的一种情绪化的东西在写作,也可以说是对于技术的一种感情告白,所以是真挚的,这种真挚将影响到读者阅读时的情绪,让你在一种颇为感性化和人性化的氛围里阅读,轻松而又有趣,而不是冷冰冰的枯燥的技术讨论,这是本书区别于其他技术类书籍的一个显著特点。
本书里,涵盖了几乎所有优化相关的知识点,以及一些很新的内容,比如bind peeking、并行执行、执行计划、Cardinality(基数)、10053事件等,这些内容对于那些渴望深度了解性能优化的读者来说,是非常有用的。
ITPUB前身是在smiling上的Oracle电子小组,刚刚开始的时候ITPUB的板块不多,只有Oracle数据库管理、Oracle开发、OCP、Cisco、网络集成、海阔天空这几个板块,会员数只有一万多人,今年过9年的发展,ITPUB已拥有技术板块100多个,注册会员数量超过230万人。每天更新的讨论帖数以万计。ITPUB的发展与像怀远君这样的专家、第一线技术工作者的长期支持是分不开的,在此也向怀远君表示感谢,没有你们就不会有今天的ITPUB。
ITPUB创始人 tigerfish
2010年6月8日
ITPUB于2001年9月26日成立的,已发展为国内最大的数据库技术讨论社区。本书作者谭怀远先生则是在2001年9月28日加入了ITPUB,相交至今将近九年时间。他在这么长久的时间,长期工作在数据库业务的第一线,积累了大量丰富的经验,也形成自己独到的见解。而这些见解,又大部分体现在本书的文字里,本书既是知识的归纳总结,同时又是个人技术感情(恕我在这里使用了一个创新的词汇,大多数长期从事技术工作的人,都有一种有墨在胸,不得不发的感觉)的抒发。纵观全书,我个人对作者所说的“最难的东西不是技术本身,而是什么时候该用什么技术”深表认同。当DBA从烦琐的日常工作脱身出来,举目远望的时候,再往前的一片田野便是架构问题,最好的最彻底的,能一劳永逸的优化,往往从架构设计开始。期待怀远君将来的新作,可以在这片更广阔的天地里驰骋。
我感到本书最大的一个特点在于,作者通过自己的一种情绪化的东西在写作,也可以说是对于技术的一种感情告白,所以是真挚的,这种真挚将影响到读者阅读时的情绪,让你在一种颇为感性化和人性化的氛围里阅读,轻松而又有趣,而不是冷冰冰的枯燥的技术讨论,这是本书区别于其他技术类书籍的一个显著特点。
本书里,涵盖了几乎所有优化相关的知识点,以及一些很新的内容,比如bind peeking、并行执行、执行计划、Cardinality(基数)、10053事件等,这些内容对于那些渴望深度了解性能优化的读者来说,是非常有用的。
ITPUB前身是在smiling上的Oracle电子小组,刚刚开始的时候ITPUB的板块不多,只有Oracle数据库管理、Oracle开发、OCP、Cisco、网络集成、海阔天空这几个板块,会员数只有一万多人,今年过9年的发展,ITPUB已拥有技术板块100多个,注册会员数量超过230万人。每天更新的讨论帖数以万计。ITPUB的发展与像怀远君这样的专家、第一线技术工作者的长期支持是分不开的,在此也向怀远君表示感谢,没有你们就不会有今天的ITPUB。
ITPUB创始人 tigerfish
2010年6月8日
媒体评论回到顶部↑
很多年前就在itpub看到作者的身影,也了解到作者管理着大量的数据库。多年的不断锤炼让作者在Oracle数据库领域有了丰富的经验。在数据库优化领域,国内的书籍相对比较少,不论哪种数据库,比较多的都是类似工具手册一样。写书是一件很不容易的事情,对作者的知识体系有着极高的要求,所以市面上流传的很多都是简单地将英文的文档翻译为中文的手册类的书籍。作者将自己多年的经验用自己的语言和通俗的比喻给我们展示出来,带给人的是另一种体验,更亲切和容易理解。除了常规的优化所涉及的范畴及Oracle 10g开始推出的AWR和ASH之外,作者还引出了10053这样的CBO相关的事件及不少的Hint方法,这些都将帮助我们非常深入地研究数据库的 SQL优化问题。相信作者将亲身经历的体验深入浅出地展示给我们,能给Oracle数据库爱好者很好的帮助。
——冯春培(biti)
当我们在2004年开始编辑出版Oracle技术书籍时,国内原创的作品还十分有限,现在,这种情况完全改变了,越来越多的技术爱好者开始总结、写作和分享,Oracle技术出版物开始丰富起来。在这个历程中,ITPUB论坛一直推动着Oracle数据库技术的探讨和应用,作者alantany正是来自于ITPUB的一位技术专家,他将自己多年的实践与经验不断总结出来,和我们大家分享,这种精神与坚持值得我们尊敬,我乐于见到这样的作品问世,也期待作者能够坚持不懈,不断同我们分享他的知识与经验。
——盖国强(eygle)恩墨科技创始人,Oracle ACE总监
很欣喜地看到这几年来国内Oracle数据库技术原创书籍的蓬勃发展,对每一位能够坐下来并且将自己的经验写出来的作者我都报以深深的敬意。对于Oracle数据库而言,也许在现在随着安装的日渐简易和默认性能的不断优化,一份默认的数据库安装,甚至是保证数据库可以正常运行都不再需要太多的专业知识,然而数据库优化仍然是非常专业的部分,这需要多年的实际工作经验积累。 可以说这本书的作者拥有得天独厚的工作环境,据我所知,他所参与管理的数据库无论是数量还是大小还是性能要求上在国内都可以排入前列,因此这是一本融合了真知灼见、可以指导实际工作的Oracle数据库性能优化书籍。 实际上我更希望读者们可以从后记开始读起,作者在后记中提及的所有观点都与我不谋而合,我同样相信无论是后记中这些观点还是全书中记录的技术知识,对于所有从业人员都有极大帮助。
——业内资深Oracle技术专家,Oracle ACE张乐奕(Kamus)
据我所知作者是中国独立撰写Oracle性能优化书籍的第一人,该书几乎涵概了Oracle性能优化的所有主题,在国内数据库性能优化领域的书籍中实属罕见。
——谢永生(warehouse) 资深Oracle培训讲师
The fast and easy way to understanding the fundamentals of database performance tunning. If you’re tired of wading through huge technical manuals that drown you in jargon, making it difficult to decipher database performance issues, help has finally arrived. Simple enough for a beginner, but challenging enough for an advanced user, this book is your shortcut to mastering database perfperformance tunning.
本书提供了一种理解Oracle性能优化的简单快捷的方法。如果你已经被成堆的关于性能优化的技术手册淹没,身心疲惫,无从下手,那么,这本书将帮你走出困境。无论你是初学者,或是经验丰富的技术人员,你都将从这本书中获得一个掌握数据库性能优化的捷径。
——Mike ITG (Investment technology group) 资深软件工程师
——冯春培(biti)
当我们在2004年开始编辑出版Oracle技术书籍时,国内原创的作品还十分有限,现在,这种情况完全改变了,越来越多的技术爱好者开始总结、写作和分享,Oracle技术出版物开始丰富起来。在这个历程中,ITPUB论坛一直推动着Oracle数据库技术的探讨和应用,作者alantany正是来自于ITPUB的一位技术专家,他将自己多年的实践与经验不断总结出来,和我们大家分享,这种精神与坚持值得我们尊敬,我乐于见到这样的作品问世,也期待作者能够坚持不懈,不断同我们分享他的知识与经验。
——盖国强(eygle)恩墨科技创始人,Oracle ACE总监
很欣喜地看到这几年来国内Oracle数据库技术原创书籍的蓬勃发展,对每一位能够坐下来并且将自己的经验写出来的作者我都报以深深的敬意。对于Oracle数据库而言,也许在现在随着安装的日渐简易和默认性能的不断优化,一份默认的数据库安装,甚至是保证数据库可以正常运行都不再需要太多的专业知识,然而数据库优化仍然是非常专业的部分,这需要多年的实际工作经验积累。 可以说这本书的作者拥有得天独厚的工作环境,据我所知,他所参与管理的数据库无论是数量还是大小还是性能要求上在国内都可以排入前列,因此这是一本融合了真知灼见、可以指导实际工作的Oracle数据库性能优化书籍。 实际上我更希望读者们可以从后记开始读起,作者在后记中提及的所有观点都与我不谋而合,我同样相信无论是后记中这些观点还是全书中记录的技术知识,对于所有从业人员都有极大帮助。
——业内资深Oracle技术专家,Oracle ACE张乐奕(Kamus)
据我所知作者是中国独立撰写Oracle性能优化书籍的第一人,该书几乎涵概了Oracle性能优化的所有主题,在国内数据库性能优化领域的书籍中实属罕见。
——谢永生(warehouse) 资深Oracle培训讲师
The fast and easy way to understanding the fundamentals of database performance tunning. If you’re tired of wading through huge technical manuals that drown you in jargon, making it difficult to decipher database performance issues, help has finally arrived. Simple enough for a beginner, but challenging enough for an advanced user, this book is your shortcut to mastering database perfperformance tunning.
本书提供了一种理解Oracle性能优化的简单快捷的方法。如果你已经被成堆的关于性能优化的技术手册淹没,身心疲惫,无从下手,那么,这本书将帮你走出困境。无论你是初学者,或是经验丰富的技术人员,你都将从这本书中获得一个掌握数据库性能优化的捷径。
——Mike ITG (Investment technology group) 资深软件工程师








点击看大图






加载中...

