MyISAM文件大小增加(加倍)

时间:2017-03-09 14:13:04

标签: mysql size myisam

我的一个表的文件大小(.MYD文件)增加了大约100%。 如果我查看数据,过去几天只有正常的每日负载。可能导致此文件大小增加的原因是什么?

myisamchk的

根据用户的建议,我尝试了sudo myisamchk -r tablename。此操作的结果是“修复索引1”“修复索引2”...和完全相同的文件大小。

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

2 个答案:

答案 0 :(得分:1)

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

以下命令将重建表。

optimize table $table_name;

myisamchk -r命令行方法也适用 - 但要确保表被锁定以防止用户访问它(否则您将面临丢失数据的真正风险)。在运行myisamchk修复后再次使用它之前一定要刷新表,否则MySQL将检测到表已更改并对其进行不必要的检查。在这三种方法中,myisamchk -r最容易丢失数据(但仍然是我首选的方法 - 你只需要小心并做好最坏的准备)。

答案 1 :(得分:0)

听起来你每天都在更换整张桌子。这是一种最佳方式;没有膨胀,没有OPTIMIZE

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

这样,你构建一个干净的,新的表并交换它。注意表总是可用的;也就是说,没有停机时间。