• Mysql千万级数据删除实操-企业案例


       某天,在生产环节中,发现一个定时任务表,由于每次服务区查询这个表就会造成慢查询,给mysql服务器带来不少压力,经过分析,该表中绝对部分数据是垃圾数据

    需要删除,约1050万行,由于缺乏处理大数据的额经验,开始直接使用delete搭配where条件进行清理,最后执行了1个小时也没有完成,后来经过跟查询,1000万条数据

    的删除需要几十个小时甚至上百小时,果断放弃,采用了迂回策略。

    三步骤策略:

    1、抽取需要保留的数据到备份表中

    2、truncate旧表

    3、备份的数据插入回来

    通过以上思路果断在10分钟内解决了,收获就是千万级数据删除delete是不可取的。

    补充注详细步骤:

     0、建立备份表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2;
    1、提取旧表需要保留的数据 INSERT INTO 新表 SELECT * FROM 旧表 WHERE 查询条件; 
    2、禁用外键为初始化旧表做准备SET foreign_key_checks = 0;(如果旧表中有外键,最好禁用下,否则truncate会提示,)
    3、初始化旧表 TRUNCATE TABLE 旧表;
    4、提取出来的数据恢复到旧表INSERT INTO 旧表 SELECT * FROM 新表;
    5、开启外键SET foreign_key_checks = 1;
     
    其他注意事项:
    1、操作大数据的过程中最好关闭mysql的日期记录和慢日志查询。
  • 相关阅读:
    使用kbmMW#1轻松实现REST
    kbmMW集成JWT
    kbmMW TkbmMWHashSHA256与Delphi 10.2 THashSHA2算出相同的结果
    REST easy with kbmMW #14 – DB Controlled login
    java的三种随机数生成方式
    Java中如何获取一个类中泛型的实际类型
    java格式化时间到毫秒
    Java Base64Utils ----Utils
    file 从InputStream读取byte[]示例
    Java四种引用类型
  • 原文地址:https://www.cnblogs.com/netsa/p/7800071.html
Copyright © 2020-2023  润新知