首页 > 解决方案 > 如何减少超过 20GB 的 MySQL 表的大小,尽管它是空的?

问题描述

我有一个大小超过 20 GB 的表,但其中没有行!??!!。我怎样才能减小表格的大小,使其不占用太多空间?我已经尝试过 phpmyadmin >> 结构上的优化按钮

在此处输入图像描述

标签: mysqloptimization

解决方案


如果表是ENGINE=InnoDB,则:

研究innodb_file_per_table变量。

如果是OFF在创建表时,则该表位于文件中ibdata1,该文件会增长但不会缩小。唯一的治疗方法是几个相当激烈的步骤。但它不一定是“坏的”;INSERTsinto table 将填充该空闲空间。

如果是ON在创建表时,则数据(零行)和索引(也是空的)位于一个 20GB 的文件中,其名称以.ibd. 简单地做ALTER TABLE table_name ENGINE=InnoDB;,或者,等价地,OPTIMIZE TABLE table_name;

这个任务会重复吗?如果是这样,让我们​​讨论如何进行“大删除”,或者如果您有时间序列,则使用分区,或者如何通过创建新表来替换所有数据,然后使用RENAME.

如果 MyISAM

  • 您应该更改为 InnoDB。
  • 只需这样做OPTIMIZE TABLE tablename;以释放空间。

推荐阅读