mysql 大 table 删除

mysql large table delete

我正在使用 mysql 数据库版本 5。我有一个 table,它有大约 500.000.000 rows.The table 回收 50GB 磁盘space 如果我信任 phpmyadmin。我喜欢删除 90% 的行以回收磁盘 space.

最好的选择是什么?

谢谢!

由于您想删除 table 中的大部分行,我建议您将要保留的行移动到临时 table,截断 table,然后re-importing。这仍然需要在 table 上停机(也就是说,在操作进行时不应对 table 进行读取或写入),但应该比逐行删除快一个数量级.

create table tmptable as select * from mytable where ...;
truncate table mytable;
insert into mytable select * from tmptable;
drop table tmptable;

隐含地,truncate table 删除并重新创建 table,这将回收 space。 documentation 关于您的问题有一些有趣的要点,例如:

Truncate operations drop and re-create the table, which is much faster than deleting rows one by one, particularly for large tables.

最快的方法是

  1. 将需要的文件复制到临时文件中 table。
  2. 截断 TABLE
  3. 从临时文件中复制回来table