没有合适的资源?快使用搜索试试~ 我知道了~
DBA 日记 第三部 作者:大牛白鳝
5星 · 超过95%的资源 需积分: 0 50 下载量 145 浏览量
2010-08-16
17:48:19
上传
评论
收藏 698KB DOC 举报
温馨提示
试读
63页
ORACLE优化日记,文笔生动,有技术,有管理,有深度。是一本DBA提高ORACLE技术的必读佳作。
资源推荐
资源详情
资源评论
DBA 日记第三部
1. 前言-写作初衷
最近一直在考虑 日记的第三部该写点什么,不少网友也提出了很多好的建议,
不过我觉得总是没有抓住要领。老白写 日记的本意是写一系列介绍方法的书,而不希
望 日记写成介绍技术的,因为介绍技术的书实在是太多了,老白目前公务缠身,没有
那么大的精力来编写一本精益求精的技术书籍。 日记一直以来都是把老白的经历介
绍给大家,把老白的一些处理问题的思路介绍给大家,我想第三部也应该是如此。
今年的元旦我是在客户现场度过的,为一家银行的年终决算做护航,期间我和客户的
部的两位老总分别聊了半个多小时,两位老总都提出了在我们的合作中,希望我能够给
他们的技术人员多传授一些方法,让他们的技术人员思考问题的能力有所提升。我和很多
客户的 部门的领导交流过,大多数领导都希望我们能够帮他们提升运维能力,这还是第
一次有人希望我能够教会他们如何思考。 号下午,在飞机上昏昏沉沉的我突然有了一个
想法,我应该写一本书,通过这本书,让读者能够学会思考问题的方法。一直以来,我都
认为 是有生命,有自己的思维的。要想学好 数据库,就一定要学会按照
来思考问题。一个 对 的基本原理理解的越深刻,那么他在处理问
题的时候越容易抓住要点,少走弯路。
记得几年前也是冬天的时候,外面的路边积着厚厚的积雪,我和阿风在中原的一个省
城为一个客户做数据库优化,那也是阿风第一次参加优化项目。在项目刚刚开始的时候,
阿风对于数据库优化十分迷茫,他希望我能够给她讲讲如何做优化。我并没有给他讲优化
的技术和技巧,而是带着他一起回顾了数据库的一些基本的组件、基本的原理和算法。记
得那次我们住在开发区的一家不错的酒店里,不过出了酒店就是黑乎乎的一片,了无生机。
外面是零下 、 度的严寒,屋内还是暖融融的。我们两个坐在沙发上,喝着茶,上着网,
聊着 。有一天,阿风突然兴奋的叫了起来:“我领悟到了,我领悟到了”。于是我
问他领悟到了什么,阿风把一些 的基本组件、对象和基本算法串在一起给我讲解
了一通。我知道这半个月时间我的心血并没有白费,阿风终于学会了用 的思维
来思考问题,这意味着他终于突破了一道很难突破的瓶颈。
我告诉阿风,这个项目我终于可以放心的交给你来做了。阿风很奇怪的问我,你还没
有教我如何做优化呢,这个项目我一个人能完成吗?我说难道你这些天学习的不正是优化
的方法吗?你现在对如何优化这个系统还是一头雾水吗?
这个项目最后完成的很完美,虽然这是阿风的处女作,不过在我的帮助下,他终于独
立完成了大多数的优化工作。通过这个项目也让阿风在技术上获得了一次大的飞跃。技术
的完善是可以靠勤奋的学习来实现的,经验的积累是可以靠岁月来堆积的,然而为什么大
多数 都只能止步于某个阶段,无法成为高手和大师呢?这是因为大家并没有懂得如何
用 的方式来思考问题,不幸的是,如果你没有学会真正的用 的方式来
思考问题,你就永远无法成为一个真正的高手。
日记第三部仍然准备以日记的形式编写,用日记的形式主要是因为我的写作比较
随意,所以也无法在初期就很严谨的编写大纲,不过这种写作方式也有不好的地方,就是
内容会略显杂乱。在 日记正式出版前,我都会对内容进行修订,在修订的时候我会把
日记进行重新的调整,使之更为严谨,结构更为合理。
日记第三部会以每天一个技术要点的形式一个一个的分析 的技术点,
采用深入浅出的方式,逐步剖析 的技术要点的基本原理以及思路。让大家通过
对这些技术要点的理解,学会分析问题,处理问题的方法。
至于知识点的来源,我会以 为主,我认为理解基本概念是成为
一个高手的起点,这些看似简单的基本概念,你真的搞明白了吗?也许你看了老白的日记,
会有不同的感受。希望我能带给大家一次愉快的阅读。
1 前言
每个来应聘 的人我都会问他们一个问题:“ 到底是什么?”,有些人会用数
据库基础的理论来回答我:“数据库是数据的集合”,也有些人会感到茫然,不知道我问这
个问题是什么意思。实际上很多 从来没有思考过这个问 题。“ 就是
,是一个产品,还能有什么意思呢?我不知道 到底是什么也没有影响到我做
一个合格的 ,很多人都会这么想。
实际上对于 我们确实还需要重新去认识认识,每个 在学习 的时候
都往往注重于学习如何建库、如何管理、如何编程、如何优化。虽然说这也是学习
数据库最为常见的一种方法,但是这样学习下去,我们总是在记忆一些枯燥的语法和脚本
虽然经过数年我们积累下了大量的经验,但是我们还是无法真正的理解 ,数据库升
级了,系统变化了,我们就必须从头去学习。常年累月,我们总是在一次一次的循环往复
的重复着同样的事情,直到我们筋疲力尽,对 失去往日的激情,最终 成为一
个职业, 成为我们谋生的手段。
事实上,我们可以换一种方式来学习 ,让 的精神融入 的血液中,
让 像 一样思考问题, 作为我们的爱好,作为我们生活的一部分存在。对
于大多数 来说,这也许只是一个乌托邦式的理想,对于绝大多数 来说,我们需
要有一份工作,需要靠这份工作来生存,娶妻生子,享受生活。并不是所有的人希望让
成为生活的一部分,这是很现实的,不过我们虽然可以仅仅把 当做是生活的
一部分,当做是谋生手段,但是我们也可以同时尝试了解更多的 的本质,让我们像
一样思考。
像 一样思考虽然不能带给你更多的生活乐趣,但是通过这样的方式去学习和思
考,我们会更加精确的了解 的精髓,让我们在 的成长过程中少走弯路。 多
年前我第一次接触 的时候,感到十分头痛。不是自夸, 多年前,我是一个相当不
错的 程序员,最高纪录是一天之内编写 多行复杂的代码,而且一次性编译通过,一
次性测试通过,这样的记录的诞生是基于十分良好的过程思维能力的。不过当我这个自认
为的编程高手第一次接触 的时候,却感到十分吃力。我无法用面向对象的思想去编
写程序,所以我学习 的过程十分痛苦,几次学习,最后都放弃了。直到有一天我看
到了一本英文的书籍《》,通过这本书,我掌握了 和面向对象设
计、编程的主要思路。自从看了这本书之后,我再次面对 程序的时候,发现一切都
是那么的简单。很快我就掌握了 编程。现在我虽然还仍然只是一个三流的 程
序员,不过粉丝网的一��修修补补的工作我完全能够胜任了,而且在一些和开发人员交
流的时候,我也能够很快的理解他们的思路。
后来我总结了一下,在看《》这本书之前,我在编写 程序的时
候,并没有理解面向对象编程的概念,只能是照猫画虎,拿着一个例子在上面修改,实际
上我的编程风格还是面向过程的,因此写出来的代码质量很差。而通过《
》的阅读,我终于学会了硬面向对象的方法,用 本身的思想去考虑问题,因此
我能够更加准确的抓住问题的本质。我想,学习 数据库也是这样,如果我们通过一
个案例一个案例的去学习 ,那么我们将永远停留在表层上,哪怕我们干上 年
年 ,也可能只能学到 的一些皮毛,一旦碰到一个我们没有见到的案例,可能我
们就会感到手足无措。
这些年里我接触过大量的 ,我一般把这些 分为四大类。第一类 是经
验型的,他们处理问题的主要方式取决于以往的经验,他们往往都有很好的习惯,会把每
一个处理过的案例整理出来,今后再碰到这类案例的时候,他们会很快的解决问题。这类
随着工作时间的增长,他们的技术也会相应的提高。第二类 是理论型的,他们
具有很深的理论基础,经常探讨一些“!"的高深问题,但是他们在某些方
面的研究很深,比如他们能够很清晰的告诉你共享池分配的算法,告诉你 #$! 的工
作原理,但是这些 往往缺乏实际的工作经验,他们研究 但是很少有机会接触
大型的数据库系统,因此他们实际解决问题的能力并不强。第三类 是技巧型的,他们
并不注重理论的学习和经验的积累,他们在处理问题的时候往往能够利用 %! 和谷歌
百度之类的工具去搜索解决方案,这类 是我见到过的最多的,这类 处理问题的
时候,往往取决于运气。第四类 是虚心请教型的,这类 无论碰到什么问题,甚
至连错误信息都没有看明白,就开始到处叫“我的系统出问题了”,然后到处去问如何解决。
实际上,这四类 都是有缺陷的,第一类 可能经过多年的工作,有十分丰富
的经验,处理问题的能力很强,而且对分析问题十分敏感,很容易抓到问题的关键,但是
由于缺乏深入理解 的理论,因此在碰到一些较为深入的问题的时候,在初期总是很
难把握住问题的关键,虽然凭借着自身丰富的经验和问题分析排查能力,他们最终也能解
决大部分的问题,但是很多时候问题解决后还是无法真正的弄明白为什么会解决问题,下
一次碰到类似的问题,可能还是要花很大的代价。
第二类 在某些方面的理论知识很强,总是喜欢研究一些十分高深的原理性的东
西,但是这类 的主要精力都放在了研究一些 内部原理上了,他们没有更多的
时间去实践,去把他们学到的理论融合到实践中去。这类 往往知识面较为狭窄,仅精
通于自己研究比较深入的领域,在实际工作中也很难发挥出自身对理论研究的成果来。
第三类 实际上在我们的现实生活中是最常见的,“万事不明问百度,百度不明就
抓瞎”,确实谷歌百度和 &! 能够帮助我们解决不少问题,但是这类 往往在问题
解决后没有好好思考一下,为什么这个方法能够帮助我们解决问题,更没有认真总结和归
纳一下,于是下一次碰到类似的问题,还是无法依靠自己的思考去解决问题,于是再
$$ 一把,也许这一次运气没有这么好了,$$ 出来的资料不是上回的那个了,于是
结果很可能是很悲惨的。
第四类 在我们现实生活中也经常出现,网络社会十分发达,打个电话或者在 ''
群里,%( 里问问,也许就有人帮我解决问题,久而久之,这些人放弃了自己思考问题,
碰到一点点小问题都首先问起再说。
看到这里,大家可能明白了,老白实际上说的不是四类 ,而是 的四种性格,
这四种性格可能会集中在某一个人身上,以老白学习 的经验来看,理论结合实践是
十分重要的。在 年前,老白虽然做了很多项目,也是很多人眼里的 数据库高
手,但是在 年前,老白就是第一类 的典型,没有经过多少理论学习,几乎所有
的 数据库的技能都是从实践中获得的。虽然在实践中我总结出大量的经验,甚至有
很多客户建议我写一本书,把我对 的理解写出来。不过当我自信满满的开始写书的
时候,我突然发现,我的一些知识需要进行确认,否则写出来就贻笑大方了。于是我开始
大量的学习 的一些理论知识,随着写书的过程的深入,我越发感到自身理论水平的
不足。《 数据库深度历险》这本书我写了 ) 年,实际上 年我就彻底放弃了出版
这本书的念头,因为我发现我的理论知识确实还需要进一步的梳理,但是我并没有放弃写
书,因为我发现通过写书,我更为系统的将 的理论知识梳理了一遍,这次梳理是通
过我以前的知识体系、工作经验,用 $#!( 的理论基础进行了一次完整的整合。
通过这 ) 年的写作,我终于完全疏通了 的理论体系,好像一个练武术的人,终于打
通了任督二脉,感到无比的畅快。
听老白说了这么一大通,是不是很多人都感觉到手脚发凉,难道成为一个合格的
有这么难吗?如果我没有打通任督二脉,就不算一个合格的 吗?实际上 成长的
道路是很多的,并不一定要走老白这一条路,老白仅仅是根据自身的经历,通过这本书来
帮助大家梳理 的一些基础知识而已,还是那句话,如果 是你的爱好,那么你
无论花多大代价去研究它都是值得的,如果 只是你职场生涯中的一个工作而已,那
么只要你认真对待他就可以了,没必要像老白那样执着。
在这本书里,老白会把《 数据库深度历险》中的一些内容,结合老白的实际工
作经验,剖析起原理,并结合案例来说明这些理论知识如何在实践中实际应用,展现给大
家,希望老白的这次写作经历,能够给大家带来一些帮助。
每个来应聘 的人我都会问他们一个问题:“ 到底是什么?”,有
些人会用数据库基础的理论来回答我:“数据库是数据的集合”,也有些人会感
到茫然,不知道我问这个问题是什么意思。实际上很 多 从来没有
思考过这个问题。“ 就是 ,是一个产品,还能有什么意思呢?我不
知道 到底是什么也没有影响到我做一个合格的 ”,很多人都会这么
想。
实际上对于 我们确实还需要重新去认识,很多朋友都会游泳,那么
我会问一个简单的问题,什么叫做真正的学会了游泳?每个学游泳的人都有这
样的感受,刚刚学习 游泳的时候最大的问题是不会换气,学会换气后再往后学
习就容易了很多,不过可能我们游上几十米、百把米就会觉得很累。后来我们
发现原来我们游泳的姿势还不 太标准,而如果我们学会了踩水,游多少米就不
是个问题了,这个时候我们就如鱼得水了。学习 其实和学习游泳十分类
似,刚刚开始的时候,我们处于入门阶段,我们要克服对 的恐惧心理,
只要我们想学好 ,我们就一定能做到,实际上 在入门阶段是十分
容易的。我们从头学习 ,学会了安装数据库,学会了管 理表空间,学会
了日常的故障处理。就像我们学游泳的时候刚刚学会换气的时候一样,我们虽
然感觉已经掌握了 数据库,但是碰到稍微复杂一些的问题我们还觉得很
难入手,我们能看清楚一些东西,但是我们感觉还是看 不远。
实际上上面这种情况是每个初学者都会碰到的,学 和学游泳一样,
刚开始的时候我们只是仅仅学会了游泳的外部表现,学会了像别人一样划水、
换气,但是我 们并没有真正掌握游泳的本质。如果要消除初学期的迷茫,我们
一定要真正的掌握 数据库的概念,一个 如果连认真学习 的
基本概念都不能做到,那么我觉得他也很难成为一个真正的高手。
好了不多说了,我们开始近体的学习。今天我们要学习的内容是“表”,可能
有很多朋友已经知道“表” 是什么了。 数据库是一种关系型数据库,关系
型数据库里,一组关系的实体化就可以组成一张表。表里面有一个或者 多个字
段,这些字段按照某种规则(我们称为关系)组成一个集合,每个关系我们就
称为一行数据,也就是我们常说的一条记录。实际上只要你已经有了关系型数
据 库的概念,那么就不需要我多说表、记录、关系之类的术语了。实际上表是
$ 数据库中十分重要的对象,实际上 很大部分的工作就是和不同的表,
不同 的数据打交道。
的表是怎么存储的呢?那么我们今天就需要学习一些 $ 数据存储
中的基本概念。首先我们要了解的是 *(块),* 是 访问的
最小物理单位,$ 数据库的 * 的大小一般是 *+) *,因此 的
块大小和操作系统的 ��大小是不同的,操作系统的块大小往往要远小于
块的大小,因此 的块不是基本的 单 位,而只是 的基本
访问单位。对于 来说每个表空间都有唯一的块大小,, 或者更早
版本的数据库, 整个数据库的所有表空间都有唯一的块大小。从 - 开始,
不同的表空间可以 拥有不同的块大小,因此参数 .*./ 定义的就不
再是数据库块大小,而是缺省表空间块大小。
虽然 * 是 的最小访问单位,但是 * 太 小了,如果表的
存储数据按照一个 * 一个 * 来分配,那么效率就太低 了。这里我
们继续介绍一个更大的单位,就是 0!!,中文可以翻译成扩展。一个 0!! 是
由一组连续的 1$ 组 成的。0!! 是 最小的分配单位, 在给对
象分配空间的时候,最少分配一个 0!!。每个 2 是由 个或者 个以
上的连续的 * 组 成的,这种连续是指在文件上的连续,在目前存储技术
充分使用条带化技术的前提下,这是一种逻辑上的连续,在物理磁盘上并不一
定就是连续的。
比 2 更大的单位就是 3&4也就是我们常说的“段”。一组结构
相同的 2 就组成了一个 3&。我们最常见的 3& 包括表、
索引、表分区、索引分区、回滚段等等。3& 是存储在某个表空间 中的,
表空间是个逻辑的概念,一个表空间一般来说包含 个或者多个数据文件,当
然一个表空间可 以不包含任何文件,这样的表空间是不能使用的。实际上
3& 是存储在数据文件里的,但 是这种存储是按照表空间来组织的,一
个段可能存储在一个数据文件中,也可能存储在多个数据文件中,不过这些数
据文件必须属于同一个表空间。下面的图是一个 很好的逻辑示意图:
剩余62页未读,继续阅读
资源评论
- 爱玩的老周2011-11-01不错的DBA书籍,适合于收藏,适合于认真学习和翻阅。
- hcr6682011-11-03DOC格式,确实是Oracle VBA日记第三部,不过感觉没有一、二部精彩。
- cndazi2012-12-30非常不错的DBA书籍 老白用幽默诙谐的文本,介绍了DBA遇到的问题 很多地方都下载不到的数据,CSDN就有,我信任CSDN
- a____44442011-12-09书本身是很精彩的,但只有几章,篇幅太少了。
meikaikomg
- 粉丝: 0
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功