Mysql 批量删除数据有啥好的方案?

讨论 未结 9 80
redorblacck886
redorblacck886 会员 2022年6月22日 09:26 发表
<p>1.写代码删、需要一批批的删除。要考虑事务长、超时问题。 2.写脚本删、怕锁表。造成阻塞 大佬们、你们删除批量数据怎么删除?</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
9个回复
  • seanzxx
    2022年6月22日 09:26
    数量少的话 delete limit 呀,在负载低的时候删,数量多就建分区呀,改动大一点
    0 0
  • aitaii
    2022年6月22日 09:26
    如果业务能中断 1 秒的话,创建一个表 A_1,rename 表,A->A_COPY, A_1->A A_COPY 删完数据拷贝到 A 表
    0 0
  • ch2
    2022年6月22日 09:59
    update set is_deleted=true
    0 0
  • wtfedc
    2022年6月22日 09:59
    删除数据的时候,只是把数据标记成了 delete ,并没有节省物理空间。可以插入一条的时候,删多条
    0 0
  • lexin132
    2022年6月22日 09:59
    把要删除的数据 id 保存到 redis 或者文件里,然后另外起个脚本读取 id 再按需删除? 删除数据的场景下应该不会特别大量吧。。
    0 0
  • sunhuawei
    2022年6月22日 10:27
    根据主键删;脚本设置好间隔时间能避免阻塞;如果是大量 sql 可以手动开启事务,手动提交,避免自动开启事务消耗大量时间;删除后记得重建索引
    0 0
  • cheng6563
    2022年6月22日 10:58
    while(true){ int updateRows = executeUpdate("delete ... limit 100"); if(updateRows == 0 ) break; Thread.sleep(200); }
    0 0