如何加快 MySQL 表修复过程?

如何加快 MySQL 表修复过程?

伙计们。我真的很感激你们的支持,因为它快要让我发疯了……

我的 MySQL 数据库中有一个损坏的表,过去几天我一直在尝试修复它,但没有成功。该表包含 1.2 Gb 的信息。

我使用“phpMyAdmin”检测到表损坏,因此我要求它修复表。这是在 7 月 20 日 14 时 47 分(格林威治标准时间)。现在是 7 月 22 日 23 时 28 分(格林威治标准时间),该过程尚未完成,尽管我的 WHM“MySQL 进程列表”显示:


时间 - 状态 - 信息

203558 - 按分类修复 - 修复表 xyz


(是的,它现在已经运行了 200,000 多秒......)

我执行的导致这种状态的查询是:


设置@@session.myisam_sort_buffer_size:=67108864;

设置@@session.read_buffer_size := 524288;

设置@@session.read_rnd_buffer_size := 524288;

设置@@session.sort_buffer_size := 8388608;

设置@@session.key_buffer_size := 8388608;

设置@@session.tmp_table_size := 67108864;

-- 执行查询

修复表 xyz;

设置@@session.myisam_sort_buffer_size:=DEFAULT;

设置@@session.read_buffer_size:=DEFAULT;

设置@@session.read_rnd_buffer_size:=DEFAULT;

设置@@session.key_buffer_size:=DEFAULT;

设置@@session.sort_buffer_size:=DEFAULT;

设置@@session.tmp_table_size:=DEFAULT;


我在其他一些网站上看到,我应该使用更大的缓冲区大小来加快修复过程,因此我选择使用比 MySQL 默认值更大的值,如下所示:

默认值


密钥缓冲区大小:8,388,600

myisam 排序缓冲区大小:8,388,608

读取缓冲区大小:131,072

读取 rnd 缓冲区大小:262,144

排序缓冲区大小:2,097,144

临时表大小:33,554,432


我不熟悉通过 shell 访问服务器,所以这不是一个真正的入门选择。

您有什么建议可以帮助我加快修复过程?我应该终止当前的 REPAIR TABLE 进程吗?我应该怎么做?

提前感谢您的支持。

答案1

你的硬盘满了吗?

修复过程至少需要原始表的两倍空间,如果空间不足,它就会等待足够的空间。修复 1.2Gb 的表应该非常快。

相关内容