jap +达梦数据库
插入1300多条数据,耗时70s,实在是太慢了;
看saveAllAndFlush方法,发现执行批量添加时,采用for循环,实则为一条一条添加,
而且插入时还判断版本号和数据在数据库中是否有重复,
有没有什么好的方法?
#根据网上的教程搞了一下午,都不行,重写方法那个我也研究了一下,不过是跳过检查的逻辑,直接执行插入;而我这里是插入前判断有没有,有则更新无则插入;
#昨天晚上回去想了一下,既然他本身方法是循环调用save()的,那么就可以使用多线程,在for循环中调用多线程执行saveFlush方法,早上上服务器跑了一遍,原本1300多条数据需要70秒左右,现在只需要20多秒左右,(看来还是可行的),但是问题来了,客户数据会分包发送数据,大概7万多数据,算下来需要20分钟多,这实在是有些拉胯,考虑换框架了,有没有推荐的框架或者方法(批量更新插入的方法)
#经过多次尝试,最终还是没有找到解决办法,不过想到了另外一招,数据请求过来,先返回数据,再执行数据库操作,用for循环遍历list,用@Async异步调用saveAndFlush方法,即在循环中依次调用单条数据的更新插入,用demo测试100条数据的更新插入,,原来批量方法耗时16秒,改造后耗时0.05秒左右,结果还可以;有个·前提,数据库插入更新操作确保不会出错,不然报错没有返回消息(个人理解)。
#此贴暂时中止,如有更好方法,欢迎留言