我有一个包含300万行的大型MyISAM表,其大小为31 GB,这是由于每行中有一个10 GB的blob。该表已经有30个分区。我想优化这个表,因为我要删除一些旧数据的行,并调整blobs的大小。我的问题是如何在优化磁盘时使用磁盘:
如果我对整个表进行优化,那么MySQL是否一次只对一个分区进行优化,而只需要一个小部分的额外空间呢?或者,我必须优化一个或几个分区,以便在优化时不要有那么多额外的磁盘空间。
发布于 2015-09-29 08:47:09
仅优化一个s大小为1GB的分区只需非常快的秒时间,我无法看到磁盘的大量使用。
发布于 2015-08-18 21:34:32
(我的答案假设是InnoDB。即使我过于悲观,“解决方案”对于MyISAM也应该很好。)
对于InnoDB,请记住innodb_file_per_table
的问题。
OPTIMIZE
将构建整个表的副本。
解决方案:如果您的空间很紧,您可以一次优化一个分区。
ALTER TABLE REORGANIZE PARTITION ...
( INTO PARTITION ... );
是的,您需要一次为一个分区构建...
,并一次执行它们。
(不要做OPTIMIZE PARTITION
,这将优化整个表。)
你想详细说明一下你的桌子是什么样子吗?我可能想说服您退出分区,或者将您转换为另一种分区方式。
https://stackoverflow.com/questions/32068084
复制相似问题