暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
PgSQL HashAgg算法 第3期 spill溢出磁盘解秘.docx
55
3页
0次
2024-09-08
5墨值下载

算法


版本

溢出磁盘解秘
上期我们介绍了版


场景

如何进行操作,本期接着介绍下

版本
怎么操作,它否和

的原一样当然不一和版

将不当前

表分组的元组溢出到磁盘不同,它是将当前

表溢出到磁盘,然后再将元组插入到腾出
空间的

表中。
1
hash
表的管理

表的结构为

,由聚合算子执行状态结构

管理。和

版本
是,


管理



 !

"


!#

"$"%!"!#
!#

&"'
,存有分组值和分组聚合值、

值;若发生

冲突,则通过链表的形式
串在一起。
2
hash
spill
机制
2.1 spill
)首先通过
agg_hash_inial_pass
构建

表,会将所有值都处理一遍,若内存中放
不下,则将

表溢出写磁盘腾出空间后,继续构

表。处理完成后(溢出
盘场景)所有都在盘临文件中进了分。实际上

映射
到一个文件中,

桶数大于临时文件个数,则多

桶会映射到一个文
中。如此,最后相当于将元组进行了一次粗略分组,写到各个临时文件中
(
spill_hash_table

%%#!"'
继续插入

)最后

内存中的
)*+,
需要溢出盘,过此
!-*+! -!
BufFileEndCompression
释放压缩内存
.
spill_hash_table
函数首先通过
%
创建

/
,然后通过如下方式


/01
中,然后再
23
号桶也写到

号,向后按

的步长写桶
写完后再向前遍历,即处理
4
号桶,再按照上面方式写磁盘。写一个临时文件时
若开启压缩的话,会调用
! -5!(*+!6"7%8"%
开启压缩
需要注意的是:使用的

压缩算法,虽然性能不错,但是比较耗内存,不论向该文件
写多少内容,大概一个文件都需
9:
,当临时文件特别多的时候,内存耗费就相当
of 3
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜