求助,批量插入大量数据应该用什么方法

今夕是何夕123 2018-03-01 11:03:00
controller里面是这样的,
def computeAllCommunityLiquidityScore(){
def db = new groovy.sql.Sql(dataSource)
def communitySql="select community_id from COMMUNITY"
def communityResult = db.rows(communitySql).asList()
communityResult?.each{
communityService.communityMobilityScore(it?.community_id.toString())
}
}
community里面大概用56万数据,我需要跑一遍数据因为还要在service里面计算,每个communityId计算大概5项的值。都需要存入库中。现在计算一条communityId的速度是1s以内。我再本地开发环境测试批量跑,速度太慢,有什么好点的方法吗?
数据库用的是pg库。
...全文
1156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Enchanter, 2018-03-13
  • 打赏
  • 举报
回复
记得结贴给分。
Enchanter, 2018-03-13
  • 打赏
  • 举报
回复
引用 4 楼 weixin_40150211 的回复:
引用 1 楼 mj280824108 的回复:
这个问题不是很难,首先,假设是50万的数据,分割成50个线程,每个线程处理一万条数据,并发进行。记得用批量,别一个个存,那样对资源的消耗很大且速度很慢。
我要根据每个communityId来封装出5个对象,批量的话会不会对服务器的内存消耗太大呢?使用grails框架开发的,我研究研究连接池了
内存消耗不会很大,才几十万条数据而已,几个线程而已,几乎不会占多少内存。
GP0071 2018-03-01
  • 打赏
  • 举报
回复
大量数据,多线程、批量入库 1000条数据1次commit,放到服务器上抛 很快的 。
Enchanter, 2018-03-01
  • 打赏
  • 举报
回复
这个问题不是很难,首先,假设是50万的数据,分割成50个线程,每个线程处理一万条数据,并发进行。记得用批量,别一个个存,那样对资源的消耗很大且速度很慢。
Enchanter, 2018-03-01
  • 打赏
  • 举报
回复
记得一定要用线程池和连接池,不然资源管理上面就会让你一头包
今夕是何夕123 2018-03-01
  • 打赏
  • 举报
回复
引用 1 楼 mj280824108 的回复:
这个问题不是很难,首先,假设是50万的数据,分割成50个线程,每个线程处理一万条数据,并发进行。记得用批量,别一个个存,那样对资源的消耗很大且速度很慢。
我要根据每个communityId来封装出5个对象,批量的话会不会对服务器的内存消耗太大呢?使用grails框架开发的,我研究研究连接池了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧