提高spark sql翻页查询性能的想法

一般每一页的数据量比较小,1000条以内。大概的想法就是把要查询的数据先一次性查出来缓存在内存中,之后翻页查询的时候直接取结果就行了,这样只是第一次查的比较慢,后面从内存中直接取数据就非常快了。但是这又带来一个问题,如果结果集太大,比如有100w行数据,而且有很多列,这样就会占用大量内存,使执行内存变小,反而会降低查询性能,因此需要分段缓存结果集。具体的做法就是:每次缓存的数据量为:每页行数*100,如果查询的数据不在缓存范围内,再次执行查询,并缓存如下范围的数据:

offset~offset+limit*100

这样每次新的查询保证缓存之后100页的数据。

这样做的缺点是需要在业务代码中加入对offset, 当前缓存数据等一些状态的管理逻辑。仅供参考!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值