思考-继续思考在数据库中两个表join的问题

##在资源有限的状况下,如何作两个大表的join?网络

 

---索引

假设系统资源:内存1G,大表10G,小表2G。内存

---资源

 

都拿到内存中进行笛卡尔集确定不行,内存没有那么大。 hash

最简单的办法是对两个表建索引,可是万一两个索引都很大,一个索引500M,一个索引1G,其实索引应该没有那么大,咱们就估算极端状况。it

仅对索引进行bitmap scan,最后读取知足的记录。但对两个索引进行扫描时,内存就不够了,怎么处理?io

想到办法是用hash jion的方式,对2G小表作hash,可能只占100M。而后循环读取10G大表,每次读取32M,而后去进行hash jion记录知足需求的记录,循环结束以后再去读取对应的记录。循环

 

那么筛选的结果假若有5G,怎么给客户端传输,客户端内存也1G。map

会从知足需求的记录信息中循环读取并投影,例如网络传输的buf为64M,那么读取64M后就等下一次请求?请求

相关文章
相关标签/搜索