问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
页块中更新和删除导致的碎片如何处理?
在叶子层上,删除操作仅从头部移除单元格偏移量,而单元格本身保持不变。在这样做之后,对应的单元格不再是可寻址的,它的内容将不再出现在查询结果中,也不需要将其置为null或移动相邻单元格。
当页被分裂时,只对偏移量进行调整。由于页的其余部分不可寻址,所以偏移量被截断的单元格不再可访问,因此每当新数据到达时,它们将被覆盖,或者在清扫进程中被垃圾收集。
由于删除操作仅丢弃单元格偏移量,而非搬运剩余单元格或物理地移除目标单元格以释放占用的空间,所以释放的字节可能最终分散在整个页上。在这种情况下,页是碎片化的(fragmented),需要进行碎片整理。
要进行写操作,通常需要可以放入单元格的一块连续的空闲区域。要将空闲碎片重新组合在一起来满足写入的需要,必须重写页面。
插入操作保留元组的插入顺序。这对空间碎片并没有显著的影响,但是如果将元组按顺序排列,则将有助于在顺序读取时进行高速缓存预取。
更新操作主要适用于叶子层:内部页的键多用于引导导航,其仅定义了子树的边界。此外,更新是在每个键的基础上执行的,除非创建溢出页,否则这通常不会导致树中的结构更改。
评论
有用 4
墨值悬赏