Mysql MyISAM文件大小已增加(两倍)
我的表的一个文件大小(一个.MYD文件)增加了大约100%。 如果我查看数据,在过去的几天里,只有正常的每日负荷。是什么导致了文件大小的增加 myisamchk 根据一位用户的建议,我尝试了Mysql MyISAM文件大小已增加(两倍),mysql,size,myisam,Mysql,Size,Myisam,我的表的一个文件大小(一个.MYD文件)增加了大约100%。 如果我查看数据,在过去的几天里,只有正常的每日负荷。是什么导致了文件大小的增加 myisamchk 根据一位用户的建议,我尝试了sudo myisamchk-r tablename。此操作的结果是“固定索引1”“固定索引2”。。。并且文件大小完全相同 编辑:第二次运行命令后,文件大小减小到正常(一半)大小。@e4c5最有可能给出答案。他要求您删除删除的行。MySQL不会从删除的行中回收空间。随着越来越多的行被删除,您的.MYD变得越大
sudo myisamchk-r tablename
。此操作的结果是“固定索引1”“固定索引2”。。。并且文件大小完全相同
编辑:第二次运行命令后,文件大小减小到正常(一半)大小。@e4c5最有可能给出答案。他要求您删除删除的行。MySQL不会从删除的行中回收空间。随着越来越多的行被删除,您的.MYD变得越大。回收空间的唯一方法是重新生成.MYD,方法是使用optimizetable命令重新创建表,或者运行myisamchk-r 以下命令将重建该表
optimize table $table_name;
myisamchk-r命令行方法也可以工作,但是请确保表被锁定,以防止用户访问它(否则您将面临丢失数据的真正风险)。请确保在运行myisamchk修复后再次使用该表之前刷新该表,否则MySQL将检测到该表已更改,并对其运行不必要的检查。在这三种方法中,myisamchk-r是最容易丢失数据的方法(但仍然是我首选的方法-您只需小心,做好最坏的准备即可)。听起来您每天都在替换整个表。这里有一个最佳的方法;无膨胀,无
优化:
CREATE TABLE new LIKE real;
populate `new`
RENAME TABLE real TO old,
new TO real;
DROP TABLE old;
这样,您就可以构建一个干净的新表并将其交换。请注意,该表始终可用;也就是说,没有停机。可能重复@e4c5-这个问题与mysql备份无关。我将对其进行编辑,使其更加清晰。您可能删除了很多行,但空间尚未回收。试试myisamchk“我有一个mysql数据库,每天都有备份。”