COMP9315 课堂笔记 week3 lecture3

Page Internals

在这里插入图片描述
PSQL 使用clock-sweep。
Buffer pool可以看作一个buffer slots的循环列表。
Buffer pool在启动服务时为空,一般在在结束时满。所以当新的page来的时候,我们需要evict(驱逐)一些page。---->NextVictimBuffer 存下一个被驱逐对象的索引。
当决定谁被驱逐时,如果一个page很受欢迎,则保留它。

usage_count 实现了度量popularity/recency的方法。
某个页面,当它每次被访问时,它的usage_count会加1(有一个小的上限)。如果它每次被考虑驱逐时,usage_count会减1。
不断增加NextVictimBuffer。

在这里插入图片描述
Buffer Pool ClockSweep Replacement Strategy
BufferDesc = (tag, usage_count, refcount, freeNext)
在这里插入图片描述
Init[1]的freeNext为2是因为没有需要free的,所以指向了 [2]。
当request R0时,我们通过nextVictim找到下一个要free的 index,也就是R0。在这里插入图片描述

Page

在这里插入图片描述
Page由Tuples组成, Tuples根据TupleId被读取。
TupleId = PageID + TupleIndex
data是一系列的固定长度的pages(即blocks)。
通过PageID任意访问page。
page包含0个或多个tuple values。
Page format = 怎样组织tuples。
当delete的时,只设置tuple的entry,不改变page的结构。
当update时,设置tuple的标签tag为removed,然后加入新的tuple。

在这里插入图片描述
通常,page是一个bytes的数组。bytes的内容是tuple,但tuple不一定相邻。

Pages的操作:
request_page(pid) 通过pageid获取page。
get_record(rid) 通过tupleid获取record。
rid = insert_record(pid,rec) 增加新的record。
update_record(rid,rec) 更新re

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值