深入理解缓冲区(七)

4.1.4 Buf结构

缓冲区:一块地址连续的空间,分为几种类型的缓冲区(元信息块、数据缓冲区块、其他信息块)

数据缓冲区块:地址连续的、多个缓存块的组合。内存中真正的数据存放区。缓冲区的组成之一。

缓存块:最小的缓存数据块的缓存单位。被数据缓存块包含。

4.1.4.1 Buf的整体结构

在src/backend/storage/buffer/buf_init.c中有InitBufferPool函数,描述了基本的buf结构:

void

InitBufferPool(void)

{

bool foundBufs,

foundDescs;

BufferDescriptors = (BufferDesc *)

ShmemInitStruct("Buffer Descriptors",

NBuffers * sizeof(BufferDesc), &foundDescs);

BufferBlocks = (char *)

ShmemInitStruct("Buffer Blocks",

NBuffers * (Size) BLCKSZ, &foundBufs);

……// 略去其他代码

/* Init other shared buffer-management stuff */

StrategyInitialize(!foundDescs);

变量名称

空间大小

功能

BufferDescriptors

NBuffers * sizeof(BufferDesc)

缓冲区的元信息,表述数据库缓冲区分配出去的缓存块等的使用情况

BufferBlocks

NBuffers * (Size) BLCKSZ

形式上是“char *”,本质上是内存开辟出的一块地址连续的区域

SharedBufHash

NBuffers + NUM_BUFFER_PARTITIONS

为便于搜索buf的一个hash结构

StrategyControl

sizeof(BufferStrategyControl)

置换策略指示器。注意不要被变量名蒙蔽,和“缓存淘汰策略”并没有直接关系


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值