PG数据库入门--buffer的管理

大家好,我是会飞的鱼。

作为一个数据库领域的新人,我将学习PostgreSQL数据库的内核,计划将其中的知识进行整理,先阐述原理,后介绍代码中的实现。目前打算从存储引擎开始学起。

好,废话不多说,我们先开始介绍缓存区的设计。

1. buffer区的基本介绍

数据会在磁盘上进行存储,操作系统会以页的形式进行管理。当我们修改数据,我们需要将这一页从磁盘上读上来,放在内存中,从而进行对应的修改。为了更好的区分概念,页在磁盘中称之为block,在内存中称之为buffer。

如图1所示,磁盘中存了许多文件,每个文件长度不一,按照page进行大小管理(page一般为4K大小)。页面从磁盘加载到内存中的缓存池。当节点又一次还要查看同一个block的内容,我们可以在内存中找到它,无需再从磁盘加载,减少IO时间。

缓存区的大小是有限制的,当缓存区的buffer不够时,我们需要选出一个buffer进行淘汰,在页面淘汰前,如果页面发生修改,页面需要先刷到磁盘,即写入到磁盘中的对应位置。但页面刷到此盘后,这个buffer就可以存储其他页面。

对于同一个页面编号,例如 (file1-page1),存在磁盘中block,也存在buffer。当buffer发生修改,我们将buffer设置为脏页,这一过程称之为置脏。当页面变成脏页后,我们会将

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值