索引概述
OpenGauss的B-Tree页面和Astore的堆表页面基本相同结构,页面间按照树形结构组织。分为根、内部节点、叶子节点。其中根和内部节点都不直接指向堆表元组,叶子节点指向索引键值对应的堆表元组(存储了该元组的堆表页面号和页内偏移)。
索引和元组可见性
当前版本的索引不存储t_xmin和xmax这样的事务信息,因此元组的可见性判断不在遍历索引时确认,而是等到或者叶子索引指向的表元组以后再确认。这也是轻量级清理不能清理堆表元组的一个重要原因,否则会六肖悬空的堆表元组。
对于indes only scan场景。会使用可见性视图(visibility map)的标志位进行快速判断,当可见性视图为1是,该元组就是可见的,能大大提高效率。