用MySQL,“ALTER TABLE … DISABLE KEYS;”语句持续了多长时间?

如果您在mysql INNODB表中禁用了键(挂起索引),那么这个设置最后会持续多久?

对于像这样的查询:

ALTER TABLE users DISABLE KEYS; 

在脚本的末尾重新启用密钥? 或者他们持续到你明确地转动索引?

Fine Manual (非常值得阅读)表明,该语句的效果会持续到执行相应的ALTER TABLE ... ENABLE KEYS语句。

实际上, ALTER TABLE … DISABLE KEYS和ALTER TABLE …启用键不起作用!

我在2011年2月13日回顾了这个问题。

我做了一些额外的挖掘,从InnoDB的母公司InnoBase Oy(在Oracle Borg 9中获得7)之前发现,事实确实如此。

这个链接build议做DISABLE KEYS和禁用外键在一起。 虽然我觉得这两者都是不必要的,但这显然是为某人工作的。

更新2011-07-18 12:35 EDT

这是一个非常好的问题,因为它暴露了MySQL中剩下的一个邪恶。 mysqldump程序在每个表的创build和加载周围都放弃了DISABLE KEYS和ENABLE KEYS,而不考虑存储引擎。 由于DISABLE KEYS和ENABLE KEYS对于InnoDB表无法正常工作(最好的情况是没有效果),因为MyISAM能够正常工作,MySQL社区应该更好地logging这个未知的事实。 噢,MySQL是在被称为Oracle的银河帝国中。 我将不会屏住呼吸文件的变化即将到来。