在INSERT FROM SELECT之后使用keycache修复MySQL

时间:2010-12-30 16:51:57

标签: mysql sql

我不是MySQL的专家,我试图理解为什么该表显示使用Keycache修复以及我可以做些什么来纠正它。我做了一些搜索,但在这个特定的原因上找不到多少......

情况:我有一张包含3600万条记录的表格。作为优化过程的一部分,我想从tablea中删除其中一个索引,特别是UNIQUE索引。为此,我创建了一个新表(CREATE TABLE tableb LIKE tablea)并从tableb中删除了唯一索引(DROP INDEX unique FROM tableb)。最后,我将tablea中的信息复制到tableb中(INSERT INTO tableb SELECT * FROM tablea)。大约四个小时,状态为发送数据,然后更改为从Keycache修复。

我的理解是,当从SELECT执行INSERT时,索引是在数据被复制时构建的,这就是为什么我不是简单地从现有表中删除索引,我认为这涉及重构所有幸存者索引。我的方法有什么问题,或者这是正常的吗?

最后,现在它正在从keycache进行修复,有什么我可以做的吗?我可以终止进程并进行修复或更改设置,还是需要等待修复过程完成?

最后的日志条目如果有帮助:

101229 14:28:28 [Warning] Warning: Enabling keys got errno 137 on db.#sql-19cc_3243, retrying
101229 16:04:02 [Warning] Warning: Enabling keys got errno 137 on db.tableb, retrying

1 个答案:

答案 0 :(得分:1)

您可能想查看此问题下的答案:MySQL - How To Avoid Repair With Keycache?