03、BufferPool内存结构的样子

本文介绍了数据库BufferPool的内存结构,包括默认128MB的BufferPool大小、free链表用于查找空闲缓存页、磁盘数据的读取与缓存、flush链表处理脏数据以及LRU算法的应用来优化缓存页使用。
摘要由CSDN通过智能技术生成

1、BufferPool 大概的样子

1.1、buffer pool 默认大小为128MB(大小可设置),里面会包含很多个缓存页(一个数据对应一个缓存页,每个缓存页16kb),同时每个缓存页还有一个描述数据,也可以叫做控制数据
1.2、 buffer pool 在数据库启动是会按照 设置的buffer pool大小开辟内存(会比设置的 buffer pool 大一些)
1.3、buffer pool中的数据是对数据库操作的时候,才会把数据对应的页从磁盘里读取出来,放到 buffer poll 的缓存页中

2 通过free链表查找空闲缓存页

2.1、随着数据库的运行缓存页势必越来越少,所以数据库为BufferPool 设计了free链表(双向链表数据结构),既每个节点便就是一个空闲缓存页的描述数据块的地址。
2.2、free 链表有一个基础节点(40字节大小 它不属于Buffrt Pool),它会引用链表的头结点和尾节点,还存储了链表中有多少个空闲的缓存页(描述数据块)
2.3、Buffer Pool里面的描述数据块组成有两个指针,一个是 free_pre ,一个是free_next,分别指向自己的上一个free链表节点,以及下一个free链表的节点。

3、磁盘上的数据读取到缓存到BuffrtPool 缓存页中

3.1、首先从free 链表里获取一个描述数据块,然后就能获取到对应的缓存页
3.2、然后就可以将磁盘中的数据,读取到找到的缓存页中了
3.3、最后把这个描述数据块在free链表中剔除掉<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值