mysql 清除大数据表单
Posted 叮伱格斐呃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 清除大数据表单相关的知识,希望对你有一定的参考价值。
背景:mysql数据库中有个日志表记录高达800多万,影响了mysql的正常业务访问,现需要清理三个月之前的所有数据,大概600多万
方法一:传统delete from xxx,传统,普通,效率底下,高数据清理容易搞垮数据库。
方法二:truncate,这个操作会把表中所有的数据给清除掉。(如果是要清空数据的话这个效率最高)。
方法三:间接法。步骤如下:
1.创建t_req_log同结构的新表 t_req_log_new 。
create table t_req_log_new like t_req_log 或通过原表建表语句创建也行。
2.访问人数较少时,停web服务(不然会操作还会写日志到该表中)。
3.执行sql将t_req_log表近三个月的数据导入到t_req_log_new新表中。
insert into t_req_log_new
select * from t_req_log where time between ‘2018-02-01 00:00:00‘ and NOW();
4.同时重命名两张表,间接实现数据删除操作,将 t_req_log_new改为原始表名替换原始表。
RENAME TABLE t_req_logTO t_req_log_old, t_req_log_new TO t_req_log;
5.删除旧表 (看情况删不删除)。
drop table t_req_log_old
6.重启服务器,观察日志。
以上操作会比delete删除快n多倍。
可间隔一段时间执行一次,也可在数据库中做一个事物,自动每日删除
以上是关于mysql 清除大数据表单的主要内容,如果未能解决你的问题,请参考以下文章