教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

数据缓冲区(陈老师博客分享)

时间:2016-01-12 来源:

Oracle SGA中第二大组件就是数据缓冲区了,它的作用就是把曾经访问过的数据块存放在内存中共享,以提高数据库性能,如果我们能够从内存中找到数据块比在磁盘中读数据块的速度快1000多倍。这个是什么概念呢,从白石桥两个人一起打车同时出发,十分钟后一个人到了西直门,另外一个已经到了福建了。想想这个对数据库的性能有多重要。

下面是数据缓冲区的架构:

我们来看看数据缓冲区的工作原理:

1、存储从数据文件读到的数据块的拷贝。Oracle把需要修改的数据块先从数据文件读入到数据缓冲区(这种读取方式叫做物理i/o),然后再修改,这样子可以提高修改的速度,其实其它的软件在修改数据的时候也是按照这种原理,包括操作系统等。

2、在缓冲区中对数据块就行读取和修改会让数据库获得非常大的性能。修改后的数据块保留在数据缓冲区,以便以后共享,如果以后在缓冲区中找到曾经访问过的数据块(这种读取方式叫逻辑度),那么Oracle会进行统计,标记为命中,缓冲区的命中率在OLTP系统下最低不超过90%,否则数据库就会有很大的性能问题。

3、根据LRU(最近最少使用)原则来管理。在数据缓冲区中有一张LRU列表,用来记录块的冷热程度,如果最近被访问的频率比较多,就是热块,否则就是冷块,如果是热块那么会被放在LRU的头部,这样子就不容易被挤出数据缓冲区(老化出去),如果是冷块,那么就容易被老化出去,数据块刚读入缓冲区时是放在LRU列表的中间位置。以后根据访问的频率发生变化。如果缓冲区的尺寸设置的太小,那么导致缓冲区存放不了太多的数据块,会导致物理读很严重,就会影响数据库的整体性能。所以设置合理的缓冲区尺寸是很重要的一件事,从9i开始,oracle提供了很多工具去检测缓冲区的尺寸是否合理,方便DBA去诊断缓冲区的命中率,缓冲区的尺寸有db_cache_size参数来设置。

4、由DB_BLOCK_SIZE参数指定标准块的尺寸。从Oracle 9i开始,Oracle就支持不同尺寸的数据块,8i版本的数据库只支持一个标准块尺寸。为什么要支持多种尺寸的数据块呢,原因是数据库的应用有原来的单纯的OLTP应用,变成了现在的OLAP应用,也就是说一个数据库既包含有OLTP应用的数据,同时也包含有DSS应用的数据。根据OLTP应用的特点,存放OLTP应用的数据块一般来说设置的小一点,而DSS应用经常是全表扫描,所以为了每次读的数据多一些,就把数据块设置的大一些。

以上就是数据缓冲区的工作原理,在后面的博文中,我会继续讨论如何进行调优。

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院