<返回更多

java 一次性处理百万数据,用了它,内存再也不会溢出了

2023-12-15  今日头条  小李子说程序
加入收藏

背景

最近在用一个同事写的后台管理导出数据进行数据分析,然后发现前端一直卡起,后来到服务器上查询日志,发现内存溢出了。

分析出来原因:原来是表数据量过大超过百万,然后导致查出来的数据,直接占满内存。

解决思路

1 传统思路: 分页查询把大数据分成小数据查询,数据量大的时候分页查询效率低下。

java 一次性处理百万数据,用了它,内存再也不会溢出了

分页查询关键代码

分页查询还可以用线程池进行优化,但是要注意线程安全。

java 一次性处理百万数据,用了它,内存再也不会溢出了

 

2 流式查询: 可以一边从数据库读取数据,一边进行处理,提高了数据处理的效率。

由于流式查询是逐行读取数据,查询速度可能会受到影响。为了提高性能,可以适当调整 fetch size

java 一次性处理百万数据,用了它,内存再也不会溢出了

 

注解写法:需要注意方法里面多了个ResultHandler(回调处理),这是和传统查询的区别

 

java 一次性处理百万数据,用了它,内存再也不会溢出了

流式查询

对比结果

分页查询花费300多秒,流式查询5s左右,效率完胜分页查询。

总结

流式查询很好,但是总有限制条件,请在使用前确保你的数据库支持流式查询。

关键词:java      点击(4)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多java相关>>>