Mysql千万级数据删除实操-企业案例
Posted 忙碌在路上
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、提取旧表需要保留的数据 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的日期记录和慢日志查询。
以上是关于Mysql千万级数据删除实操-企业案例的主要内容,如果未能解决你的问题,请参考以下文章
这样的Dubbo + Redis千万级分布式超高并发秒杀案例,有点厉害!
353mysql查询每个表的数据量_大厂面试官:千万级数据量的表,如何进行快速查询?