作者:empty 页数:455 出版社:empty |
在这本书里读者将会学到作者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是作者在实践中长期积累的心得体会,当读者掌握了一些处理问题的基本思路之后,成为一名合格的DBA就是一件轻而易举的事情了。
性能优化是数据库应用的核心问题。目前的商业或开源的数据库产品,发展已日臻成熟, 很少有经常发生崩溃急需修复的情形。故DBA除了日常的常规维护任务外, 大多把精力花在优化数据库上。在2005年的时候, IT PUB也曾出过一本《Oracle数据库性能优化》(盖国强、冯春培、叶梁、冯大辉主编) 的技术书, 颇受Oracle DBA们的欢迎。现在很高兴地看到在IT PUB技术丛书里又增加了一本关于数据库优化知识的书籍。IT PUB于2001年9月26日成立的, 已发展为国内最大的数据库技术讨论社区。本书作者谭怀远先生则是在2001年9月28日加入了IT PUB, 相交至今将近九年时间。他在这么长久的时间,长期工作在数据库业务的第一线,积累了大量丰富的经验,也形成自己独到的见解。而这些见解,又大部分体现在本书的文字里,本书既是知识的归纳总结,同时又是个人技术感情(恕我在这里使用了一个创新的词汇,大多数长期从事技术工作的人,都有一种有墨在胸,不得不发的感觉)的抒发。纵观全书,我个人对作者所说的“最难的东西不是技术本身, 而是什么时候该用什么技术”深表认同。当DBA从烦琐的日常工作脱身出来,举目远望的时候,再往前的一片田野便是架构问题,最好的最彻底的,能一劳永逸的优化,往往从架构设计开始。期待怀远君将来的新作,可以在这片更广阔的天地里驰骋。我感到本书最大的一个特点在于,作者通过自己的一种情绪化的东西在写作,也可以说是对于技术的一种感情告白,所以是真挚的,这种真挚将影响到读者阅读时的情绪,让你在一种颇为感性化和人性化的氛围里阅读,轻松而又有趣,而不是冷冰冰的枯燥的技术讨论,这是本书区别于其他技术类书籍的一个显著特点。peeking、并行执行、执行计划、Cardinality(基数) 、10053事件等, 这些内容对于那些渴望深度了解性能优化的读者来说,是非常有用的。
本书里, 涵盖了几乎所有优化相关的知识点, 以及一些很新的内容, 比如bindIT PUB前身是在smiling上的Oracle电子小组, 刚刚开始的时候IT PUB的板块不多,只有Oracle数据库管理、Oracle开发、OCP、Cisco、网络集成、海阔天空这几个板块,会员数只有一万多人, 今年过9年的发展, IT PUB已拥有技术板块100多个, 注册会员数量超过230万人。每天更新的讨论帖数以万计。IT PUB的发展与像怀远君这样的专家、第一线技术工作者的长期支持是分不开的,在此也向怀远君表示感谢,没有你们就不会有今天的IT PUB。
很多年前就在it pub看到作者的身影, 也了解到作者管理着大量的数据库。多年的不断锤炼让作The fast and easy way to understanding the fundamentals of database performance tunning.If本书提供了一种理解Oracle性能优化的简单快捷的方法。如果你已经被成堆的关于性能优化的技者在Oracle数据库领域有了丰富的经验。在数据库优化领域, 国内的书籍相对比较少, 不论哪种数据库,比较多的都是类似工具手册一样。写书是一件很不容易的事情,对作者的知识体系有着极高的要求,所以市面上流传的很多都是简单地将英文的文档翻译为中文的手册类的书籍。作者将自己多年的经验用自己的语言和通俗的比喻给我们展示出来,带给人的是另一种体验,更亲切和容易理解。除了常规的优化所涉及的范畴及Oracle 10g开始推出的AWR和ASH之外, 作者还引出了10053这样的CBO相关的事件及不少的Hint方法, 这些都将帮助我们非常深入地研究数据库的SQL优化问题。相信作者将亲身经历的体验深入浅出地展示给我们, 能给Oracle数据库爱好者很好的帮助。当我们在2004年开始编辑出版Oracle技术书籍时, 国内原创的作品还十分有限, 现在, 这种情况完全改变了, 越来越多的技术爱好者开始总结、写作和分享, Oracle技术出版物开始丰富起来。在这个历程中, IT PUB论坛一直推动着Oracle数据库技术的探讨和应用, 作者alan t any正是来自于IT PUB的一位技术专家,他将自己多年的实践与经验不断总结出来,和我们大家分享,这种精神与坚持值得我们尊敬,我乐于见到这样的作品问世,也期待作者能够坚持不懈,不断同我们分享他的知识与经验。很欣喜地看到这几年来国内Oracle数据库技术原创书籍的蓬勃发展, 对每一位能够坐下来并且将自己的经验写出来的作者我都报以深深的敬意。对于Oracle数据库而言, 也许在现在随着安装的日渐简易和默认性能的不断优化,一份默认的数据库安装,甚至是保证数据库可以正常运行都不再需要太多的专业知识,然而数据库优化仍然是非常专业的部分,这需要多年的实际工作经验积累。可以说这本书的作者拥有得天独厚的工作环境,据我所知,他所参与管理的数据库无论是数量还是大小还是性能要求上在国内都可以排入前列, 因此这是一本融合了真知灼见、可以指导实际工作的Oracle数据库性能优化书籍。实际上我更希望读者们可以从后记开始读起,作者在后记中提及的所有观点都与我不谋而合,我同样相信无论是后记中这些观点还是全书中记录的技术知识,对于所有从业人员都有极大帮助。据我所知作者是中国独立撰写Oracle性能优化书籍的第一人, 该书几乎涵概了Oracle性能优化的所有主题,在国内数据库性能优化领域的书籍中实属罕见。
更多源我的新浪博客(http://blog.sina.com.cn/ckook笔者在写这本书的时候,翻看了很多当前国内数据库方面的书籍,发现写性能优化的书并不多,特别是从工作经验和思路上来讨论性能方面的书,更是少之又少,这些因素让笔者思考要写这样一本书,这也算是这本书的一个定位。在这本书里,你将会学到笔者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是笔者在实践中长期积累的心得体会,在笔者看来,掌握处理问题的方法和分析问题的思路在日常工作中显得更为重要,当你掌握了一些处理问题的基本思路之后, 剩下的工作就是去Google或者阅读参考书了。本书的一个特点是,凡是作者提到的观点,都尽可能地使用一些例子来证明它,这样看起来更有说服力一些。为什么会出现数据库的性能问题
性能问题是最近几年来DBA们越来越关注的一个数据库技术领域, 归根结底, 造成它的原因是最近几年信息化进程的飞速发展,导致了很多系统的用户数量猛增,数据库中存储的数据量亦成几何级数激增,数据库作为数据处理和存储的最终受体,将必然直接承担这种变化导致的性能下降。因此在人们对信息的依赖性越来越强的时候,对信息使用的效率也变得越来越关注, 这样数据库的性能优化问题就日益严重地压在DBA的身上。
第1章引起数据库性能问题的因素
第2章
第3章
软件设计对数据库的影响.
数据库的设计.
数据库的硬件设计.
小结.
锁和阻塞
2.1关于锁.
2.2锁和阻塞.
2.3引起阻塞的其他情况..
软件架构设计对数据库性能的影响..
软件代码的编写对数据库性能的影响..
OLTP数据库..
OLAP数据库.
存储容量..
存储的物理设计.
数据的安全..
select for update..
外键和索引.
Latch和等待.
共享池中的Latch争用..
数据缓冲池Latch争用..
3.2.1表数据块.
3.2.2索引数据块..
3.2.3索引根数据块.
3.2.4段头数据块.
让Oracle跑得更快——Oracle 10g性能分析与优化思路
优化器.
4.1RBO基于规则的优化器.
4.2CBO基于成本的优化器..
执行计划.
5.1Cardinality(基数)
5.2SQL的执行计划..
Hint..
6.1和优化器相关的Hint..
6.2访问路径相关的Hint..
6.3表关联顺序的Hint..
6.4表关联操作的Hint.
6.5并行执行相关的Hint.
6.6其他方面的一些Hint.
第7章分析及动态采样..
第8章
第9章
第10章
all_rows和first_rows(CBO)
RULE Hint..
FULL Hint.
INDEX Hint.
NO_INDEX Hint..
INDEX_DESC Hint.
INDEX_COME IN E Hint..
INDEX_FFS.
INDEX_JOIN..
INDEX_SSH int.
LEADING Hint..
ORDERED Hint.
8.5.1并行查询.
8.5.2并行DDL操作..
8.5.3并行DML操作..
8.6.1并行相关的初始化参数.
8.6.2并行度的设定..
8.7.1直接加载和REDO..
8.7.2直接加载和索引..
8.7.3直接加载和并行.
8.7.4直接加载和SQL*LOADER.
USE_HASH, USE_NL和USE_MERGE Hint..
NO_USE_HASH Hint.
NO_USE_MERGE Hint..
NO_USE_NL Hint.
PARALLEL Hint..
NO PARALLEL Hint..
APPEND Hint..
DYNAMIC_SAMPLING Hint.
DRIVING_SITE Hint..
CACHE Hint..
直方图..
DBMS_STATS包..
动态采样..
7.3.1什么是动态采样..
7.3.2动态采样的级别.
7.3.3什么时候使用动态采样?.
小结..
并行执行.
8.1并行和OLAP系统.
8.2并行处理的机制..
8.3读懂一个并行处理的执行计划.
8.4一个很常见的并行执行等待事件..
8.5并行执行的适用范围..
8.6并行执行的设定.
8.7直接加载..
变量绑定..
9.1什么是变量绑定,为什么要做变量绑定..
9.2
9.3
PDG
为什么说OLTP必须要求变量绑定而OLAP不应该绑定变量.
bind peaking…
SQL_TRACE和10046事件..
10.1SQL_TRACE.
10.2TK PROF工具..
10.310046事件..
第11章
第12章
第13章
附录A
后记
让Oracle跑得更快——Oracle 10g性能分析与优化思路
10053事件..
性能视图和性能参数
12.1性能视图..
VS SQL_SHARED_CURSOR..
vS session.
VS sess stat.
VS session_wait.
Cursor_sharing..
DB_FILE_MULTI BLOCK_READ_COUNT
PGA_AGGREGATE_TARGET和SGA_TARGET..
OPTIMIZER_DYNAMIC_SAMPLING..
生成AWR性能报告
AWR性能报告分析.
Stats pack的安装..
Stats pack性能采集.
生成ASH性能报告.
ASH性能报告分析.
引起数据库性能问题的因素
AWR性能报告.
Stats pack性能报告..
ASH性能报告..
小结..
常见的等待事件
关于数据库的学习方法..