在我的一个大小约为11G的表上运行一个optimize table命令时,在优化过程完成后,使用的磁盘空间立即增加了2 2Gig。我希望优化能恢复一个空间。
发生什么事了呢?
优化完成后,24台核心机的MySQL CPU利用率是以前的2-3倍,负载平均为18-20倍。CPU和负载平均值在几个小时后略有下降,但仍高于往常。有类似的经历吗?谢谢。
发布于 2014-01-11 17:56:53
我也有过同样的经历。解决方案是通过以下命令重新构建表:
ALTER TABLE my_table ENGINE=TokuDB ROW_FORMAT=TOKUDB_SMALL;用您最喜欢的压缩算法替换TOKUDB_SMALL。
使用InnoDB,一个OPTIMIZE TABLE命令只做一个简单的ALTER。但是在TokuDB中没有,表空间也没有被回收。通过使用ALTER强制使用ENGINE=TOKUDB,您将把它置于TokuDB的控制之外,让MySQL服务器告诉TokuDB创建一个(真正的)新表。
发布于 2013-09-13 11:54:56
TokuDB的优化行为是对给定表的所有分形树索引中的所有节点进行脏化,这可能会导致文件系统中的文件大小增加,因为我们将保留旧版本的节点,直到下一个检查点完成。这取决于节点被污染/写入磁盘的速度以及检查点完成所需的时间。如果发生这种情况,第二个优化表命令通常会使您回到原来的(或更小的)大小。
我建议对优化表进行跟踪的一个操作是,如果您决定更改压缩,因为它允许将所有节点快速重写为新的压缩格式。
https://dba.stackexchange.com/questions/48190
复制相似问题