Scanning
抓取所有pages中的tuples作为结果集。
Page Cost:b(一个表的data file中pages的总数)
PSQL的heap file可以带overflow pages。
如上,暴力scanning的代价是b+b(Ov),b(Ov)是overflow pages的总数。
如果不按顺序,则可以如下:
找到最多1个结果的query:通过primary key:
代价:
最好情况:1个page(tuple在第一个page)
最坏情况:b个page(tuple在最后一个page或者不存在)
平均情况:b/2个page
如果hash function比较好,则overflow file不会特别大。
最好情况:存在在data pages。
最坏情况:遍历所有data file和overflow file。
平均情况:大约一半的data file和一半的overflow chain找到。
Hash仅用于“相等”的情况。
所以“>50”只能搜索全部的pages。
Relation r里包括了file descriptor等信息。
大致步骤:得到page(加载到memory)->得到record->转换成tuple
curPage是memory里page的指针。
nTuples§(一共多少个tuples)的信息在page的开头的directory中。
nPages(rel)的信息在relation中。
Relation的结构如下:
next_tuple():
get_page(red,0)–>获取relation的第一个page。
如果current tuple id与nTuples(s->curPage)的相等,则说明已便利所有的tuple,我们继续获得新的page,如果了fi