COMP9315 week5b 课堂笔记

Hash帮助优化query time:如果query拥有相同的value,通过hash函数快速定位到相同的page。
在hash时,有时候不同值落在了同一个点,这就是hash collision problem(哈希冲突),但时每个bucket都有很多空间,所以不用担心这个问题。
在这里插入图片描述
ka是一个words的数组,它的起始与byte stream 的起始一样,如果K不能被4整除,会产生alignment error。所以我们假设K起始于一个4byte的边界,然后视ka为一个4bytes的数组,即无符号整数。(即把ka这个bytes address看作一个uints的数组)。

ka+=3是指越过3个4bytes,即12。
在这里插入图片描述
两种衡量Hash的方法:
(1)L指有多少available的capacity可用(load factor)。
r是tuples的总数。
b是pages的总数。
c是每个page能容纳tuples的数。
bc是data file能容纳多少tuples。
当L接近于1时非常好。

(2)让overflow page越少越好。
平均overflow chain的长度:Ov=b(ov)/b

最好情况: hash file满了且没有overflow pages。
最坏情况:hash value等于0。与Heap file一样。
平均情况:0.75<=load factor L<=0.9, 0<Ov<1

Hashing的Selection

在这里插入图片描述
通过hash找到对应的Page,如果在page里就返回tuple,不在就搜索它的overflow pages,如果有则返回tuple。
如果没有找到则返回null。

最好的情况:直接在hash返回的page上找到tuple。所以是1.
平均情况:在hash返回的page上没找到,再寻找一半的overflow pages找到tuple。所以是1+Ov/2。
最坏情况:page上有最长的的overflow chain。

通过Hash function得到Page:
在这里插入图片描述
Select 不唯一的keys(pmr)在这里插入图片描述
所有相同的都存在于一个bucket中。
找到hash对应的page,搜索它的overflow page。
如果Ov很小,则是一个很好的cost。

Select with hashing in range queries
在这里插入图片描述
Hash对range queries无效,大部分的Hash function不能保留顺序。除非attribute是离散的且hash function确保tuple根据hash key的顺序在data file中存储,比如要查询年龄20~30,则run query 20,21,…30。

Hashing的Insertion

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值