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

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

如果禁用 mysql INNODB 表上的键(暂停索引),该设置会持续多久?

对于类似这样的查询:

ALTER TABLE users DISABLE KEYS;

脚本结束时这些键是否重新启用? 或者它们会持续到您明确地重新打开索引?

答案1

精细手册(非常值得一读)表明该语句的效果将持续到ALTER TABLE ... ENABLE KEYS执行相应语句为止。

答案2

ALTER TABLE ... DISABLE KEYS 和 ALTER TABLE ... ENABLE KEYS不适用于 InnoDB。

我早在 2011 年 2 月 13 日就讨论过这个问题。

我做了一些额外的调查,并从 InnoDB 的母公司 InnoBase Oy(在 Oracle Borg 中成为 9 家公司中的 7 家)那里发现,情况确实如此。

此链接建议同时执行 DISABLE KEYS 和禁用外键。虽然我认为两者都没有必要,但这显然对某些人有用。

更新时间:2011-07-18 12:35 EDT

这是一个非常好的问题,因为它揭露了 MySQL 中遗留的邪恶。mysqldump 程序在创建和加载每个表时盲目地删除 DISABLE KEYS 和 ENABLE KEYS,而不考虑存储引擎。由于 DISABLE KEYS 和 ENABLE KEYS 对 InnoDB 表不起作用(最好的情况下没有影响),而对 MyISAM 却能正常工作,因此 MySQL 社区应该更好地记录这一未知事实。哦,是的,MySQL 位于被称为 Oracle 的银河帝国的中心。我不会屏息期待即将到来的文档更改。

相关内容