jpa 批量删除数据过多的经历 记录

记录使用jpa 删除 数据过多所遇到的坑

前提:有个业务需求要处理 100 万条数据左右,其中就有删除操作,然后就在这个删除操作不断踩坑,记录一下

  1. 刚开始使用 jpa 自带的deleteAll 方法的时候直接删除这100万条数据,系统直接提示OOM,堆栈溢出在这里插入图片描述
    然后就把这100 万条数据 分批次处理,一次删除 10 万条数据,但是在删除的过程中,日志在不断的打印查询的接口,仔细一看deleteAll 的时候 它会调用先调用查询接口,然后再删除,
    在这里插入图片描述
    在这里插入图片描述
    100 万条数据 先查询 再删除会耗费较大的资源,这种方法也不可取

  2. 后面查询资料 有个 jpa 有个 deleteInBatch 方法 不会查询数据,会直接做删除操作,但是在删除的过程中出现了
    在这里插入图片描述
    后面发现打印的sql 语句 是 delete from xx where id = ? or id= ? or id=?.. 这种方式也不可取

  3. 后续自己写了原生的 删除sql 语句, delete from xx where id in () 但是后续报了一个长度限制的错误,只能将批次处理 删除3万 左右的数据量,记得删除完数据之后 list.clear() 把list 情况,让内存及时释放出来

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值