用于优化分区MySQL表的磁盘使用情况

时间:2015-08-18 09:06:10

标签: mysql optimization space disk partition

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

如果我对整个表进行优化,MySQL是否会逐步执行分区并且一次只优化一个分区,因此只需要一个小分区的额外空间?或者我必须优化一个或几个分区,以便在优化时不会有太多的额外磁盘空间。

2 个答案:

答案 0 :(得分:1)

仅优化大小为~1 GB的分区只需几秒钟,我看不到任何繁重的磁盘使用情况。

答案 1 :(得分:0)

(我的回答是假设InnoDB。即使我过于悲观,'解决方案'也适用于MyISAM。)

对于InnoDB,请记住innodb_file_per_table

的问题

OPTIMIZE将构建整个表格的副本。

解决方案:如果空间紧张,可以通过

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

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

(不要OPTIMIZE PARTITION,这将优化整个表格。)

您想详细说明您的餐桌是什么样的吗?我可能想要讨论分区,或者用不同的分区方式与您交谈。