快速释放mysql表空间

方案一(推荐★★★★★):新建表 + 导入最近1个月数据(最快释放空间)

这是互联网公司最常用的方法。

例如:

创建一个和 table1 结构完全相同的新表 table1_new,但不复制任何数据。

CREATE TABLE table1_new LIKE table1;

导入最近一个月:

INSERT INTO table1_new
SELECT *
FROM table1
WHERE create_at >= NOW() - INTERVAL 1 MONTH;

确认数据:

SELECT COUNT(*) FROM table1;
SELECT COUNT(*) FROM table1_new;

然后

RENAME TABLE
table1 TO table1_old,
table1_new TO table1;

观察几天没问题:

DROP TABLE table1_old;

立即释放50GB左右空间。

优点

✅ 不会产生大量undo

✅ 不会锁很久(只有rename瞬间)

✅ DROP TABLE秒完成

✅ 空间立即释放

这是MySQL官方都推荐的大表清理方式。