我有一个包含300万行的大型MyISAM表,其大小为31 GB,因为每行有10KB的blob。该表已有30个分区。我想优化表,因为我要删除包含一些旧数据的行并调整blob的大小。 我的问题是关于磁盘使用的同时进行优化:
如果我对整个表进行优化,MySQL是否会逐步执行分区并且一次只优化一个分区,因此只需要一个小分区的额外空间?或者我必须优化一个或几个分区,以便在优化时不会有太多的额外磁盘空间。
答案 0 :(得分:1)
仅优化大小为~1 GB的分区只需几秒钟,我看不到任何繁重的磁盘使用情况。
答案 1 :(得分:0)
(我的回答是假设InnoDB。即使我过于悲观,'解决方案'也适用于MyISAM。)
对于InnoDB,请记住innodb_file_per_table
。
OPTIMIZE
将构建整个表格的副本。
解决方案:如果空间紧张,可以通过
一次优化一个分区ALTER TABLE REORGANIZE PARTITION ...
( INTO PARTITION ... );
是的,您需要一次为一个分区构建...
,并一次执行一个。
(不要OPTIMIZE PARTITION
,这将优化整个表格。)
您想详细说明您的餐桌是什么样的吗?我可能想要讨论分区,或者用不同的分区方式与您交谈。