Indexing
indexing是一个辅助文件,包含不同类型的records,由(key_value,tuple)组成。
如果我们要搜索k2,在index file中找到k2对应的tid(即一个k2所在data page的引用)。当我们找到匹配的tuples,需要读它们的data pages,然后对它们本身进行操作。
Index file按key的大小排序,因此我们可以进行二分搜索。所以data file中的tuple乱序没有影响效率。
(key_value,tuple)这种entry远小于tuple本身,所以index file比data file小。
对于单个attribute的indexing
Attribute A可能是排好序的,也可能是primary key。它们的indexes结构随性质不同。
3种indexing type:
primary:unique field的indexing,A可能按顺序。
clustering: non-unique field的indexing,A按顺序。
secondary: A无序,且可能重复。
Index 的structure:
1.dense :一个tuple对应了一个index entry。
2.sparse :只有一些tuples被index entries引用。
3.single-level : index file只有一层index。
4.multi-level :index file有多层index。
index file有i个pages,i<<b(因为index file比data file小很多)
index file有 page的capacity ci ,ci >>c
Dense index: I =ceil(r/ci) r是tuples的总数
Sparse index: I