伙计们。我真的很感激你们的支持,因为它快要让我发疯了……
我的 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 的表应该非常快。