温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Ask Hoegh中buffer cache和buffer有什么区别

发布时间:2021-11-29 14:53:26 来源:亿速云 阅读:300 作者:柒染 栏目:关系型数据库

这期内容当中小编将会给大家带来有关Ask Hoegh中buffer cache和buffer有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

问:

Oracle数据库的SGA包含db block buffer cache和redo buffer等组件,那么,同样属于内存,buffer cache和buffer有区别吗?

答:首先我们对比一下db block buffer cache和redo buffer的概念和功能。

buffer cache,其中文名称为缓冲器高速缓冲存储器。按照oracle官方的说法,buffer cache就是一块含有许多数据块的内存区域,而这些数据块主要都是数据文件里的数据块内容的拷贝。

由于buffer cache位于物理文件系统和块设备驱动程序之间,因此,当物理文件系统需要从块设备上读取数据时,它首先试图从buffer cache中去读。如果命中,则内核就不必在去访问慢速的块设备。否则如果命中失败,也即数据不在buffer cache中,则内核从块设备上读取相应的数据块,并将其在buffer cache中缓存起来,以备下次访问之用。
类似地,但物理文件系统需要向块设备上写数据时,也是先将数据写到相应的缓冲区中,并将这个缓冲区标记为脏(dirty),然后在将来的某些时候将buffer cache中的数据真正地回写到块设备上,或者将该缓冲区直接丢弃。从而实现减少磁盘写操作的频率。
redo buffer,又叫Redo Log Buffer,是SGA中一段保存数据库修改信息的缓存。这些信息被存储在重做条目(Redo Entry)中,重做条目中包含了由于INSERT、UPDATE、DELETE、CREATE、ALTER或DROP所做的修改操作而需要对数据库重新组织或重做的必须信息。在必要时,重做条目可用于数据库恢复。重做条目是Oracle数据库进程从用户内存中拷贝到Redo Log Buffer中去的。重做条目在内存中是连续相连的。后台进程LGWR负责将Redo Log Buffer中的信息写入到磁盘上活动的重做日志文件(Redo Log File)或文件组中去的。参数LOG_BUFFER决定了Redo Log Buffer的大小。

接下来,我们在对比一下buffer和cache的概念。

缓存(cache)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。 
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写如磁盘),也可以通过sync命令手动清空缓冲。 

两者都是RAM中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的
从以上两组概念对比,我们就不难理解buffer cache和buffer的区别了。

上述就是小编为大家分享的Ask Hoegh中buffer cache和buffer有什么区别了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI