如何加快MySQL表修复过程?

家伙。 我真的很感谢你的支持,因为这让我发疯。

我在MySQL数据库上有一个损坏的表,在过去的几天里,我一直试图修复它,但没有成功。 该表有1,2 Gb的信息。

我使用“phpMyAdmin”检测到表的腐败,所以我要求它修复表。 这是在7月20日14时47分(格林尼治标准时间)。 现在是7月22日23时28分(格林威治标准时间),程序没有完成,虽然我的WHM“MySQL进程列表”显示:


时间 – 状态 – 信息

203558 – 通过分类修理 – 修理表xyz


(是的,现在已经跑了200,000多秒了…)

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


SET @@ session.myisam_sort_buffer_size:= 67108864;

SET @@ session.read_buffer_size:= 524288;

SET @@ session.read_rnd_buffer_size:= 524288;

SET @@ session.sort_buffer_size:= 8388608;

SET @@ session.key_buffer_size:= 8388608;

SET @@ session.tmp_table_size:= 67108864;

– 执行查询

修理表xyz;

SET @@ session.myisam_sort_buffer_size:= DEFAULT;

SET @@ session.read_buffer_size:= DEFAULT;

SET @@ session.read_rnd_buffer_size:= DEFAULT;

SET @@ session.key_buffer_size:= DEFAULT;

SET @@ session.sort_buffer_size:= DEFAULT;

SET @@ session.tmp_table_size:= DEFAULT;


我读过一些其他网站,我应该使用更大的缓冲区大小来加快修复过程,所以我select使用比我的MySQL默认值更大的值,我列出如下:

默认值


关键缓冲区大小 :838.86万

myisamsorting缓冲区大小 :8,388,608

读缓冲区大小 :131072

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

sorting缓冲区大小 :2,097,144

tmp表格大小 :33,554,432


我不熟悉对服务器的shell访问,所以这不是一个真正的select。

你有什么build议来帮助我加快修复过程? 我应该终止当前的REPAIR TABLE过程吗? 我该怎么办?

预先感谢您的支持。

你的硬盘满了吗?

如果没有足够的空间,维修程序至less需要比原来的桌子多一倍的空间,只需要等待足够的空间。 修复一个1.2Gb的表应该是非常快的。