a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 108|回复: 0

[其他] Oracle认证:Oracle数据库数据高速缓存解析

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
使用过Oracle数据库的人都知道,Oracle数据库的运行速度与效率,在同类数据库中是名列前茅的,出格是对年夜量数据进行访谒时,加倍有超卓的默示。那么,Oracle数据库是靠什么实现的呢?笔者下面将经由过程一系列的文章,向巨匠展示Oracle数据库供给高机能运算的奥秘。9 k5 K5 K' d) Z: G  {( S2 n& w5 f
  Oracle数据库作为复杂运算的首选数据库,其首先是经由过程所谓的数据高速缓存来实现对数据的高速运算与操作的。) Q# C' N: f6 w" {2 A
  数据高速缓存跟操作系统的缓存近似,其存储比来年夜数据文件中篡夺的数据块,其中的数据可以被所有的用户所访谒。如当我们操作Select语句年夜数据库中发芽员工信息的时辰,其首先不是年夜数据文件中去发芽这个数据,而是年夜数据高速缓存中去查找,而没有这个需要再去发芽磁盘中的数据文件了。只有在数据缓存中没有这个数据的时辰,数据库才会年夜数据文件中去发芽。Oracle数据库为什么要如斯设计呢?这是因为数据库在篡夺数据的时辰,篡夺内存的速度比篡夺磁盘的速度要快良多倍,所以这种机制可以提高数据的整体访谒效率。
3 G0 o9 w( S! W" \1 H1 k* z, n  虽然其他数据库也有这方面的设计,可是,相对来说,Oracle数据库比其他数据库,在这方面有加倍超卓的默示。难怪Oracle数据库在内存的要求上,比其他数据库要高。若以稍微的价钱牺牲一些内存,而换取更高的数据访谒机能。笔者认为仍是值得的。下面我们就来看看,Oracle数据库在数据高速缓存上有哪些非凡的默示。- y3 p% [) n4 W1 C9 }: D3 f0 P
  一、 余暇缓存块
% L$ Q  Y% e5 h7 D8 T' E% L  当我们年夜头启动数据库后,系统就会为数据库分配一些余暇的缓存块。余暇缓存块中是没有任何数据的,他在何处默默的等着别写入记实。当Oracle 数据库年夜数据文件中篡夺数据后,数据库就会寻找是否有余暇的缓存块,以便将数据写入其中。
" F: X3 C5 U) i$ o6 ~7 H7 l% v; P  一般来说,数据库在启动的时辰,就会在内存中预先分拍这些缓存块。所以,Oracle数据库在启动的时辰,会占用斗劲多的内存。可是,这可以省失踪在现实需要时向内存申请的时刻。所以,有时辰Oracle数据库虽然已启动,内存的占用率就很高,可是,厥后续仍然可以正常运行的原因。而其他数据库虽然刚启动的时辰内存占用率不是很高,可是,但系统内存达到80%以上时,在进行数据措置就会受到较着的影响。
* r0 M% u* m3 G1 [8 V% J  所以,当我们操作SELECT语句年夜数据库文件中篡夺文件的时辰,数据库首先会寻找是否有余暇的缓存。
: _" M5 H) G8 `+ B# K  二、射中缓存块& A9 u% v- F, U& z/ [* ^
  当SELECT语句先年夜数据库文件中篡夺数据后,会把取得的数据放入到这个射中缓存块中。也就是说,当我们操作发芽语句年夜数据库发芽处员工信息后,这个信息就会被保留在高速缓存中。直道高速缓存耗损完毕等原因,这个空间才会被释放。如斯的话,下次用户在发芽员工信息的时辰,就不需要年夜数据库文件中再次发芽相关信息,而直接年夜数据高速缓存中提取数据,年夜而提高数据库的访谒效率。, O5 E, [( |: ~- O" j3 `" R  q
  此外要注重的一个问题是,射中缓存块中的数据不会被写入数据文件。确实,这个射中缓存块中的数据没有被更改,其当然也不会被写入数据库文件中。" L- b6 k3 w, x# ?; h8 ~  S2 `
  三、脏缓存块8 y2 u! A' l( s2 o' t; q8 a
  当我们操作SELECT发芽语句把员工信息的数据发芽出来后,数据库会把这个数据所存储的空缓存块做标识表记标帜,暗示该缓存块已经存稀有据,使命中缓存块。此时,我们若在操作数据更新语句UPDATE对其中某标识表记标帜录进行更新时,如要把张三的名字改为张四。运行UPDATE语句后,数据库也首先年夜高速缓存中查找是否有这标识表记标帜录,若存在这标识表记标帜录的话,就直接更改这标识表记标帜录,而且把该缓存块标识表记标帜为赃缓存块。如斯的话,就可以连结数据的一致性。
7 a, p4 P0 Z0 c  也就是说,脏缓存块存储的是已经被改削过的,可是还没有写入到数据库文件的信息。当SQL的UPDATE等数据更新语句对某个缓存块中的数据进行更改之后,这个射中缓存块就会被数据库标识表记标帜为脏缓存块。当知足必然的前提时,这些脏缓存块中的数据内容会被写入到数据库文件中去,以便永远性的保留数据库改削记实。( k0 Q' O2 e. x/ C) |
  当系统中没有余暇缓存块,而用户又需要发芽数据时,数据库就发芽当前所有的脏缓存块,把最先更改的脏缓存块中的内容先写入数据库文件中,以便释放这个脏缓存块。数据库就又会把这个脏缓存块标识表记标帜为余暇缓存块,以便操作户下次存入数据。
% Y/ V* W- b* y5 [; d" m$ C  那Oracle数据库到底是经由过程什么手段,来节制余暇缓存块、射中缓存块、脏缓存块之间的彼此转换的呢?说出来也许你不相信,Oracle数据库就是经由过程两张表,来打点这么复杂的功能。这两张表分袂是DIRTY列表与LRU列表。
8 v% }# i# D& t$ W" S2 r9 f& _8 K  其中LRU列表保留着所有余暇缓存块、射中缓存块已经还没有被移入到DIRTY列表中的脏缓存块。当Oracle数据库用户在发芽数据的时辰,可能会碰着如下情形:' S+ z* u. v4 v' k" O8 t, h( F
  1、当用户查找员工信息时,数据库首先在LRU列表中发芽是否有余暇缓存块。其发芽的数据是年夜尾部起头查找。当查找有余暇的缓存块时,数据库就会把查到的数据写入到这个余暇缓存中。
$ [9 l/ d, V3 S; g" c+ f  2、若数据库在发芽的时辰,首先查到的是脏缓存的话,则会把这个脏缓存移动到DIRTY列表中,然后再继续发芽,直到发芽到合适的余暇缓存块为止。5 n/ f$ K3 o" v4 Y
  3、若数据库在LRU列表中,年夜尾到头查了一遍,没有找到余暇缓存块,或者虽然有余暇缓存块,可是其容量不合适要求时,数据库就会且则竣事这一次查找。然后,系统就会触发数据库写历程,把DIRTY列表中的脏缓存块写入到数据库中去。已经被写入到数据库文件中去的脏缓存块将又被数据库标识表记标帜为余暇缓存块,并插入到LRU列表中。当数据库执行完毕这个动作之后,数据库又会对LRU列表进行搜索,找到合适的数据高速余暇缓存之后,就会把篡夺的数据写入到这个余暇缓存中。所以,我们在操作数据库的时辰,会发现有时辰篡夺年夜量数据的时辰,速度会斗劲慢。除了其他原因外,也有一部份原因是因为数据库没有查到足够年夜的余暇缓存在存放这些数据,故只好写进行读写操作,以释放更多的脏缓存,然后再进行发芽操作。( H7 x' t+ [! m& S! r0 R, q2 [
  知道了这些数据库高速缓存工作事理之后,我们数据库打点员又该做些什么呢,来对Oracle数据库进行优化。为此,笔者有以下建议:
4 T+ ?# n3 I* q; f/ c, Q  1、为Oracle数据库设置装备摆设尽量年夜的内存。Oracle数据库最新版本,按照官方的建议,其内存需要1G。虽然在低于这个内存数目的时辰,数据库仍然可以运行,可是,其运行适度会年夜打折扣。当发芽年夜量数据的时辰,更是斗劲吃力。笔者此刻使用的数据库处事器,是使用了4个G的内存。以前我用的是2个G的。内存进级后,发现数据库的机能获得了斗劲年夜的改善。' }1 h, ~' {( j. k
  2、在对数据进行发芽操作时,尽量使用限制前提。如斯刻需要发芽发卖部门的员工信息时,我们不需要发芽全数的员工信息,而是在SELECT语句中,操作WHERE前提语句设置发芽前提。如斯的话,就可以充实操作DIRTY列表中的余暇缓存块,而不会因为余暇缓存块容量不够而频仍的去执行数据库写操作。这会较着降低数据库的运行操作。同时,在发芽时,最好也能够明晰发芽的信息,如你只需要员工的姓名与入职日期,那就不需要把员工的出生年月、身份证号码都发芽出来。所以,有时辰合理设计视图,也可以提高数据库的运行效率。  O0 h% `5 X( H% {  u  Z
  3、最好不要在数据库处事器上运行其他的处事。在数据库处事器中,若还运行其它处事器的话,除了硬件资本争夺影响处事器的运行效率之外,还会发生一个问题。就是会使得数据库的数据高速缓存块不持续。这会直接影响数据库发芽余暇缓存块的效率。对脏缓存块进行数据库写入操作以及数据库进行标识表记标帜之间的转换也会发生影响。所以,按照笔者的经验,数据库处事器最好能够自力。最多只能跟其对应的应用处事器部署在统一台处事器上。如斯刻Oracle数据库是一台ERP系统的后台数据库,最好数据库能够跟ERP处事器分隔部署。可是,若因为处事器资金的限制,那么可以把ERP应用处事器跟数据库处事器部署在一台处事器上。可是,不能再跟邮件处事器等应用处事器放在一路。这会影响数据高速缓存的打点效率,年夜而最终影响数据库的运行效能。此刻处事器价钱逐渐下滑,处事器的成本已经不是影响企业数据库应用的关头。所以,出于数据库机能考虑,笔者认为,企沂ё仝这膳缦沔仍是应该细腻的进行投资。没需要为了这么一点点钱,影响到数据库的机能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-2 06:35 , Processed in 0.188128 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表