优化分区 MySQL-Table 的磁盘使用情况

Disk usage for optimizing a partitioned MySQL-Table

我有一个大型 MyISAM table,它有 300 万行,由于每行有 10KB 的 blob,所以大小为 31GB。 table 已经有 30 个分区。我想优化 table,因为我要删除包含一些旧数据的行并调整 blob 的大小。 我的问题是关于优化时的磁盘使用情况:

如果我对整个 table 进行优化,MySQL 会遍历分区并一次只优化一个分区,因此只需要额外的 space 个小分区分区?或者我是否必须优化一个或几个分区,以便在优化时不会有那么多额外的磁盘space。

(我的回答假设是 InnoDB。即使我过于悲观,'solution' 应该适用于 MyISAM。)

对于 InnoDB,请记住 innodb_file_per_table 的问题。

OPTIMIZE 将构建整个 table.

的副本

解决方案:如果您对 space 很紧张,您可以通过

一次优化一个分区
ALTER TABLE REORGANIZE PARTITION ...
                ( INTO PARTITION ...  );

是的,您需要一次为一个分区构建 ...,并一次执行一个。

(不要做OPTIMIZE PARTITION,那样会优化整个table。)

您想详细说明一下您的 table 是什么样的吗?我可能想说服你放弃分区,或者说服你采用不同的分区方式。

仅优化大小约为 1 GB 的分区只需要几秒钟,而且我看不到任何大量磁盘使用。