Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql MyISAM文件大小已增加(两倍)_Mysql_Size_Myisam - Fatal编程技术网

Mysql MyISAM文件大小已增加(两倍)

Mysql MyISAM文件大小已增加(两倍),mysql,size,myisam,Mysql,Size,Myisam,我的表的一个文件大小(一个.MYD文件)增加了大约100%。 如果我查看数据,在过去的几天里,只有正常的每日负荷。是什么导致了文件大小的增加 myisamchk 根据一位用户的建议,我尝试了sudo myisamchk-r tablename。此操作的结果是“固定索引1”“固定索引2”。。。并且文件大小完全相同 编辑:第二次运行命令后,文件大小减小到正常(一半)大小。@e4c5最有可能给出答案。他要求您删除删除的行。MySQL不会从删除的行中回收空间。随着越来越多的行被删除,您的.MYD变得越大

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

myisamchk

根据一位用户的建议,我尝试了
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数据库,每天都有备份。”