高并发Oracle数据库系统的架构与设计
高并发Oracle数据库系统的架构与设计ow推荐序文以载道书以自娱侯松的新书付梓,嘱我为序,品读精华章节,览其前言,心有所感,遂言而记之。关于写作之因由,于作者来说,一直是最为重要的缘起。认真地写作一本好书,其中的坚持、勤勉、钻硏对于作者来说都是极大的考验,所以古人说靡不有初,鲜克有终,侯松完成了这本书,恭喜他。作者在前言中提及,其实写这本书是他内心积攒多年的情节所在,我也曾听其屡屡言及,虽有所期,但是未望其果。今日书成,方知作者坚持终未放弃,此诚可贵。然而写作一本既可以自娱,又可以载道的作品就又难上加难,尤其是今日 Oracle技术书籍几乎汗牛充栋,这一挑战绝对不容小觑纵观侯松大作,其结构设计堪称匠心独运,让读者眼前一亮,书中第-一部分,于 Oracle数据库的技术细节仅选取有关索引设计、表设计、优化器等核心部分,我相信这也是作者最有心得的部分,所谓授人以长,读者必能从他十数年的经验中体会 Oracle的核心技术;而书的第二部分涉及了 Oracle纵横扩展的技术体系,包括了TT、GG、DG等知识(国内书籍在TT、GG方面几乎空白),作者从架构入手,取 Oracle延展的核心产品和解决方案,以自己在金融领域的实践为依托,娓娓演绎出来。如此两两结合,内取 Oracle核心技术,外取延展核心产品,理论与实践相结合,紧扣书旨之架构之意。以此框架与立意而论,业内尚未有与此绝类之书,相信读者可以从中获得更为宏观的技术视野和实践经验,如此则不负作者孜孜之作,拳拳之义我从作者的认真和经验之中,收获良多,感谢作者。盖国强云和恩墨创始人, Oracle ace总监推荐序二cww还记得10年前,初次与侯松见面还是刚刚大学毕业进入公司时,他正端坐在台前认真地编写代码。彼时和他还不在一个部门工作,但是对他的技术和工作态度早有耳闻,后来有幸和他一起为公司开发ERP系统,他严谨而灵活的思维让我觉得他天生就应该属于IT。当时系统的后台数据库是 Oracle,按照规定我们这样的菜鸟是不能直接操作数据库的,即使出现问题也要找外籍专家来解决, Oracle给了我们高大上的第一印象。这家公司虽大,奈何对刚刚走出校园、渴望知识的我们在技术提升方面实在有限,几个人闲下来总在讨论如何找到出路,想来每个年轻人都会经过这个阶段。当时初生牛犊,没有经过太多的犹豫,选择了 Oracle这条道路。时至今日看来, Oracle为我们带来的除了还算顺利的职场生涯,也使平时工作中的思维模式有所改变, Oracle架构体系之复杂,设计理念之先进,即使在分布式,开源技术大行其道的今天仍然在工作中给到我大量的启示,让我对于其他I技术能够做到触类旁通。在这里也想告诉正在寻找方向的IT人,热爱你的选择,条路走到黑,做到行业顶尖,一定会有回报的市面上 Oracle书籍甚多,然抄文档、炒冷饭、二把刀翻译书层出不穷,能称得上原创和精品的寥寥无几,涉及金融保险业内一些技术解决方案的更是凤毛麟角,这本书在技术和行业经验方面一定能够给广大读者以帮助。庄浩英DeNa China运维总监7w前言为什么要写这本书写一本 Oracle数据库方面的技术书籍,是我一个持续了四五年的想法。本着自我总结和快乐分享的初衷,不只一次地咨询过 eygle大师关于写书的细节, eygle大师也热情地予以指导。遗憾的是,总是因为这样那样的原因,这个想法迟迟不能落地。2013年的夏天,我有幸作为微博特使参与了甲骨文全球大会( Oracle Open World)上海站的活动,跟一位甲骨文的朋友闲谈中,不经意聊到了与 Oracle数据库“共事”已经快十年了。朋友说我应该有不少心得了,鼓励我花一年的时间来做一个总结,可以写一本书分享给更多的朋友。“十年”是一个非常特别的东西,它彻底激发出我写书的热情。凌乱的思绪,不知该写些什么的时候,联想到再游十年未见西湖的感触云恸风摧山北暮,桥断平湖,西子颜如故。曲院风荷香暗渡,余晖昨日穿朱户。月澹星稀闻浪住,对酒当歌,言莫愁时苦。意若随心睛若雨,谁知明日鸿归处?对于技术人来说,杭州渐渐演变成技术之城,然而因为西湖,她应该是艺术的。正如以艺术之眼去欣赏 Oracle数据库,不仅仅是纯技术活,更能发现其艺术之美。怀着一颗附庸风雅之心,我决定写一本具有一定实用价值的数据库架构设计和性能优化方面的书。回顾十年技术之路,如大多数同行一样,一切都是从OCP认证开始的,没能赶上8iOCP的末班车,只好搭乘了9iOCP的头班车。如今认证不如以前受重视了,然而我一直认为OCP给我们提供了一个完整的基础知识体系,其价值不在于那一张纸而已。现在,DBA工作内容逐步实现了流程化和模块化,一些初学者已经可以轻松地完成一些复杂架构的搭建,却时常会因为一些基础的概念性的东西而纠结不清,我会毫不犹豫地推荐他们去进行OCP教材的学习。只有建立自己的基础知识体系,才能主动地去思考问题,才能开始专职DBA之路。在十年之前,有专职DBA的公司可以说少之又少,早期的DBA都是从开发转过来的做的人多了,也就有专职DBA这个概念,进而很多不愿意写代码的人也纷纷投身其中。各个公司也出于系统安全和精细分工的考虑,开始禁止DBA了解、熟悉业务,禁止DBA访问业务数据等,以至于现在很多DBA没有开发能力,也不懂得业务应用,仅仅是一个数据库技术的支持者,进而导致DBA被误读为夕阳职业。早期的DBA为什么能备受重视,不仅仅是因为物以稀为贵,更多的是因为有开发背景,了解业务流程,具备复合能力,这才是最可贵的。可以说不懂得DBA技能的开发不是好开发,不懂得开发的DBA不是好DBA。可喜的是,随着时间的发展,大家都开始意识到这个问题,于是数据库架构师的概念应运而生,他们是一群复合能力的拥有者,是开发人员和DBA之间的桥梁。然而,复合能力也是有较强的行业依赖性的,没有可以跨行业的万能复合,也没有能完全跨行业实现的万能数据库架构。我在本书的编写过程中,也是以我熟悉的金融行业为立足点,尽可能地兼顾全面阐述本书将给读者一个全新的视角,秉承大道至简的主导思想,只介绍高并发数据库架构设计中最值得关注的内容,不在于某种技能的分享,而致力于一种方法论的建立,希望能拋砖引玉,以个人的一些想法和见解,为读者拓展出更深入、更全面的思路。本书特色从技术层面上讲,本书首次介绍了国外已经成熟使用,而国内方兴未艾的 Times ten(简称TT)和 Golden gate(简称GG)。 Times Ten作为一款基于内存的关系型数据库,同时兼顾了内存处理的快速和传统数据库的稳定,更具备了与 Oracle数据库的无缝衔接,对于日趋增长的数据库并发量和即时响应速度要求,其将大有用武之地; Golden gate一度被誉为数据复制、集成、迁移、容灾之神器,在国内也开始风靡,本书将揭示其核心特点及优势前景。另外, Oracle数据库的技术细节仅选取有关索引设计、表设计、优化器等部分,只讲述最核心的技术,以激发读者的联想,进而衍化至繁。从适合读者阅读和掌握知识的结构安排上讲,分为“内政篇”和“纵横篇”。“内政篇Oracle技术方面的优化,很多资料只是介绍如何做,却鲜有介绍为何这样做,本篇将让读者知其所以然,也是作者自身经验的一些总结。“纵横篇”, TimesTen对很多 Oracle从业人员而言基本上是只闻其名,不知其味的。在与淘宝、支付宝同行交流中,大家都觉得好,但是因为不了解而不用。本篇将给大家展开一个活生生的 Times ten应用指导。本书就是从 Oracle内部扩展、纵向扩展( TimesTen)、横向扩展( Golden gate、ADG)三个维度为读者展开讨论,深入分析,并提供相应的解决方案。本书中一些实操的例子和章节,比较适合DBA、程序员,可以成为工作手边书;架构设计和深入分析方面的章节,比较适合架构师、BA、IA,可以分享经验,拓展解决问题的思路;工具和产品的应用场景定位等,更适用于CTO、CIO对技术市场前景的把握。读者对象口数据库架构师口数据库管理员口开发应用架构师口数据库开发人员口数据库相关的管理人员其他对数据库技术感兴趣的人员如何阅读本书本书分为两大部分,共计9章内容。第一部分为“内政篇”,着重讲解 Oracle数据库内部的架构设计优化和扩展,包括以下5章内容:第1章从实际问题岀发,讨论现下流行的架构设计思路,并提出大道至简的架构理念,以数据库森林体系为基础,展开高并发 Oracle数据库的架构设计方法论。第2章详细介绍索引扫描方式,索引对排序过程的意义,索引设计的方法与技巧,并深入剖析索引树分裂生长原理和索引维护方法。第3章详细介绍表设计中字段类型选择、字段顺序、分区表使用、冗余手段、数据生命周期管理等问题,以及行链接、行迁移、碎片管理等表结构维护手段。第4章详细介绍了优化器的种类,配置管理方法,成本计算原理,统计信息的收集管理策略,执行计划管理,以及基于 Oracle工具的数据库性能影响分析。第5章从实际案例出发,详细介绍锁相关问题(包括Lock、 Latch、 Mutex等)的高并发案例,以及REDO相关的IO、进程、等待事件的分析。第二部分为“纵横篇”,着重讲解基于 Oracle数据库的纵向和横向扩展的架构设计,包括以下4章内容第6章详细、深入地介绍了 Oracle的一款内存数据库 Times Ten的前世今生、安装配置技巧、缓存应用、高可用架构设计,以及基础对象的设计与管理。并从实际运维出发,介绍 TimesTen的典型监控方法,数据备份恢复与数据迁移方法。最后结合实际高并发场景,对 TimesTen进行评估与对比测试。第7章展开介绍使用 Golden gate的安装配置和监控,并结合链路原理的实现,拓展数据集成平台和异构数据库群的设计思路。第8章主要围绕 Data guard功能,介绍了“T-1”交易数据库和ADG数据库两种新VIlI型的应用方式,拓宽了 Data guard功能的使用范围,使得其不仅仅是典型容灾解决方案,更能为解决高并发问题发挥积极作用。第9章带给读者一个总结性的整体介绍,并简单介绍一些超出纯技术范围的软技巧。其中,第2章、第3章、第4章和第6章为本书的重点章节,如果你没有充足的时间完成全书的阅读,可以选择性地进行重点章节的阅读。如果你是一位有着一定经验的资深人员,本书可能会是一本不错的案前书。然而,如果你是一名初学者,请在开始本书阅读之前,先进行一些数据库的基础理论知识的学习。勘误和支持由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果您有更多的宝贵意见,欢迎您访问我的个人网站htp:/www.housong.net进行专题讨论,我会尽量在线上为您提供最满意的解答。同时,您也可以通过微博@麻袋爸爸,或者邮箱houalexeαgmail.com联系到我,期待能够得到你们的真挚反馈,在技术之路上互勉共进。致谢感谢 Oracle官方文档,在写作期间提供给我最全面、最深入、最准确的参考材料,强大的官方文档支持也是其他数据库所无法企及的感谢大仙、子夜流星两位好友,在我写作出现迷惑的时候,予以帮助和指导。感谢 Tom Kyte、 Jonathan Lewis、 Tanel Poder等多位大师,以及 ITPUB和CSDN社区的各位技术专家们的博客文章,每次阅读必有所获,本书也多处引用了他们的观点和思想。感谢机械工业出版社华章公司的首席策划杨福川和编辑髙婧雅,在近一年的时间中始终支持我的写作,你们的鼓励和帮助引导我顺利完成全部书稿。特别致谢最后,我要特别感谢我的太太 Liven和女儿,我为写作这本书,牺牲了很多陪伴她们的时间,但也正因为有了她们的付出与支持,我才能坚持写下去。同时,感谢我的父母、岳父岳母,特别是我的岳母,不遗余力地帮助我们照顾女儿,有了你们的帮助和支持,我才有时间和精力去完成写作工作。谨以此书献给我最亲爱的家人,以及众多热爱数据库技术的朋友们!侯松cmwm目录推荐序21.1B树索引15推荐序二2.1.2全表扫描…16前言21.3 ROWID扫描172.14索引唯一扫描18第一部分内政篇2.1.5索引范围扫描……202.1.6索引全扫描21第1章大道至简2..7索引快速全扫描21.1初见高并发2.1.8索引跳跃扫描241.1.1从一次谈话说起223468892.19索引组合扫描251.1.2问题就在那里2.1.10索引联立扫描…271.3你不是一个人在战斗2.2索引与排序1.2说句时髦话221B树索引内部结构…28谈谈去IOE22.2输出排序9122开源的作用域22.3降序索引…341.3在 Oracle的世界里…10224聚合查询mnO与maxO371.3.1数据库森林体系1023索引设计优化1.3.2大道至简1223.1索引选择度4014本章小结132.3.2数据分布的影响…41233索引聚簇因子…45第2章高效B树索引……2.3.4数据存储的影响42.1索引扫描识别1423.5复合索引5023.6索引被无视543.52分区表设计思路10624索引分裂583.5.3分区表特性…10624.1分裂原理3.6适当的冗余110242实例分析613.6.1反范式建模11025索引维护70362物化视图113251为何重建索引713.6.3结果集缓存1172.52何时重建索引…733.64直接路径插入12025.3如何重建索引……763.7碎片分析与整理……1222.54废旧索引清理773.7.1碎片的产生1232.6本章小结783.72 DBMS SPACE包1253.7.3碎片的整理130第3章高效表设计7938本章小结…1383.1数据生命周期管理803.1什么是数据生命周期管理……80第4章查询优化器1393.1.2架构模型设计814.1优化器概述1403.1.3数据分层存储8641.1优化器简介14032常用字段类型选择…8741.2参数配置…1433.21 VARCHAR2与CHAR782像优化器一样思考147322 NUMBER与 VARCHAR2…842.1成本计算机制…1473.2.3主键字段的选择90422成本计算公式推导150324LOB字段9143统计信息管理15533字段顺序9543.1统计信息分类1563.3.1热字段靠前排9543.2制定收集策略……1583.3.2行宽需要控制9743.3管理收集方式1643.4行链接与行迁移43.4制定备份策略3.4.1行链接原理9943.5收集直方图174342行迁移原理…1014.4执行计划管理175343发现问题10144.1获取执行计划……175344解决问题104442固化执行计划1763.5分区表的使用10545性能影响分析1833.51何时使用分区表10546数据库重放188
下载地址
用户评论
学习下高并发Oracle数据库系统的架构与设计
现在去IOE化很厉害,大家觉得oracle出路在哪里?书收藏了
书不错,但是只有2章,不全
谢谢分享。
很有用 可惜不是全本
一本不错的好书
只有两章,也很感谢了
写得不错,对学习TT有帮助
看了一部分,感觉挺好的!还行吧!