够意思博客够意思博客够意思博客

MYSQL如何快速删除千万级别数据

MYSQL如何快速删除千万级别数据

MYSQL数据库因生产原因需要删除大量数据,因数据量太大接近上亿条,用常规delete删除小数据可以,删除几千万大数据量会非常慢,并且不会释放出磁盘空间,还需要optimize或repair来压缩数据表来释放硬盘空间,时间更长,需要几天时间,太慢了!因此采用新建表,导入无需删除的数据,然后删除老表,把新表改名为旧表

方案一

使用delete删除数据

delete from table_name where id<100000

因delete执行速度与索引量成正比,若表中索引量较多,使用delete会耗费数小时甚至数天的时间

方案二

1.创建临时表,表结构与原表结构相同

create table td_api_tracker_point_list_new like td_api_tracker_point_list;

2.将需要保留的数据插入至临时表中(如果保留的数据较多,耗时相对也较长。百万数据正常十几秒左右)

insert into td_api_tracker_point_list_new select * from td_api_tracker_point_list where id>9800000

3.drop删除原表(drop表一般耗时在3秒以内)

drop table td_api_tracker_point_list;

4.将临时表改名为原表名

alter table td_api_tracker_point_list_new rename to td_api_tracker_point_list;


总结

数据量较小推荐使用第一种方案,百万或者千万级别以上使用第二种方案


本文为够意思原创文章,转载无需和我联系,但请注明来自够意思博客blog.go1s.cn:够意思博客 » MYSQL如何快速删除千万级别数据

加载中~