2017-03-09 166 views
0

我的表格文件大小(.MYD文件)增加了大约100%。 如果我查看数据,那么在过去几天里只有正常的日常负载。什么可能导致文件大小增加?MyISAM文件大小增加了(加倍)

myisamchk的

如所建议的通过我试图sudo myisamchk -r tablename用户。此操作的结果是“修复索引1”“修复索引2”...和完全相同的文件大小。

编辑:第二次运行该命令后,文件大小减小到正常(一半)大小。

+0

可能重复[自动或定期备份mysql数据](http://stackoverflow.com/questions/38916163/automated-or-regular-backup-of-mysql-data) – e4c5

+0

@ e4c5 - 这个问题不是与mysql备份相关。我将编辑它以使其更清晰 – Gerfried

+1

您可能已删除了很多行,但空间未被回收。尝试myisamchk https://dev.mysql.com/doc/refman/5.7/en/myisam-optimization.html – e4c5

回答

1

@ e4c5有最可能的答案。他要求您删除已删除的行。 MySQL不会从删除的行中回收空间。随着越来越多的行被删除,你的.MYD变得越大。回收空间的唯一方法是重建.MYD - 通过重新创建表,使用optimize table命令或运行myisamchk -r。

以下命令将重建表。

optimize table $table_name; 

的myisamchk的-r命令行方式也工作 - 但可以肯定的表被锁定,以防止用户访问它(否则您将数据丢失的非常现实的风险)。在运行myisamchk修复之前,确保刷新表之前再次使用它,否则MySQL将检测到表已更改,并针对它执行不必要的检查。在这三种方法中,myisamchk -r是最容易丢失数据的方法(但仍然是我的首选方法 - 您只需要小心谨慎并做好最坏的准备)。

0

这听起来像是你每天都在更换整个桌子。这是一个最佳的方式来做到这一点;不膨胀,不OPTIMIZE

CREATE TABLE new LIKE real; 
populate `new` 
RENAME TABLE real TO old, 
      new TO real; 
DROP TABLE old; 

这样,你建立一个清洁,新,表,并在将其交换请注意,表总是可用的;也就是说,没有停机时间。