COMP9315 week4b 课堂笔记

本文详细介绍了PSQL中的扫描(Scanning)过程,包括heap file的暴力扫描及其代价,以及不同类型的扫描操作。此外,文章还深入讨论了排序(Sorting)的策略,如外部排序、归并排序,并分析了其成本。PSQL使用sort keys和SortTuples减少页面读取,提高效率。同时,文中提到了分区(Partitioning)阶段的哈希函数应用以及去重策略。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值