cmu15-445课程所用到的Extendible Hash Table的一个性质证明

在Fall2023的P2中,对特定bucket_idx_i进行Remove后,可能会触发merge,

设:在 merge 前,bucket_idx_i对应了local_depth_ipage_id_i

一次 merge 的过程涉及到两个page_id,而一个page_id所对应的 bucket_idx 数量是2 ^ ( global_depth - local_depth)个,
于是原本的两个page_id涉及到的bucket_idx数量是2 ^ (global_depth - (local_depth_i- 1))
这也体现出来mergelocal_depth会减小1

这里提供另一个可能不直观但是帮助理解Extendible Hash Table结构的思路。
对任意bucket_idx及其对应local_depth,它对应了一个邻居 nb_bucket_idx,如果这个邻居的nb_local_depthlocal_depth相同,则可以考虑 merge ,也就是说,这两个bucket_idx和他们所对应的page_id实际上以2 ^ (local_depth - 1)的间隔遍布了整个directory,这种性质可以通过分析EHT的split操作逻辑得到。
首先,对最简单的global_depth=0或1的情况这种性质是显然成立的。
然后,EHT的Grow和插入一定伴随着 split,而每次 split,实际上是把原本以2 ^ (local_depth)的间隔遍布了整个directory的所有page_id中的一半赋成了另一个新的page_id,这也就符合了前面提到的这种“遍布”性质

posted on 2025-01-01 16:08  火焰龙卷风  阅读(2)  评论(0编辑  收藏  举报

导航