![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CMU 15-445 2022fall
文章平均质量分 91
旧夢_
这个作者很懒,什么都没留下…
展开
-
P1 - Buffer Pool -- Task #3 - Buffer Pool Manager Instance
负责对 buffer pool 中的所有 page 访问情况进行记录,所以大小和 buffer pool 一样,frame_id 本质上就是 buffer pool 里 page 所在的位置,这也解释了 ExtendibleHashTable 本质就是通过物理页号得到该页应该存放在 buffer pool 中的哪个位置。负责将 page_id 转为 page_id,frame_id的 pair,注意 page_id 是磁盘上用来标识物理页的。page_id_:装的物理页面页号。原创 2023-03-28 18:03:50 · 194 阅读 · 0 评论 -
P1 - Buffer Pool -- Task #2 - LRU-K Replacement Policy
我们在这个函数中根据情况直接设置了对应 frame 的 evictable 属性并对 size 做了增减,但是如果 SetEvictable(frame_id_t frame_id, bool set_evictable) 参数 frame_id 对应的 frame 是一个空的 frame 呢?将空的 frame 的 evictable 属性赋值为 false,这样在 Evict(frame_id_t *frame_id) 函数中就不会当作候选。空的 frame 不可以被换出!距离加上正无穷,即优先换出。原创 2023-03-28 11:42:58 · 255 阅读 · 0 评论 -
P1 - Buffer Pool -- Task #1 - Extendible Hash Table
注意 IndexOf() 函数本质是截取偏移量的后几位,也就是说和插入时访问的目录项偏移量后几位相同的所有目录项都指向这个桶。从扩容的新的偏移量开始遍历到最后,目录项直接指向 偏移量-原有目录项数量 的目录项(除上面指向新建桶2的目录项)和 IndexOf() 函数中用一样的方法,按位与,遍历所有目录项找到与插入时访问的目录项偏移量后几位相同的。插入时的目录项指向 新建桶1,偏移量为 目录项+原有目录项数量 的目录项指向 新建桶2,先分裂,重新插入原来桶中的 k/v ,再次 insert 引起分裂的元素。原创 2023-03-27 23:32:17 · 211 阅读 · 1 评论