![使用 MySQL 时,“ALTER TABLE ... DISABLE KEYS;”语句持续多长时间?](https://linux22.com/image/555656/%E4%BD%BF%E7%94%A8%20MySQL%20%E6%97%B6%EF%BC%8C%E2%80%9CALTER%20TABLE%20...%20DISABLE%20KEYS%3B%E2%80%9D%E8%AF%AD%E5%8F%A5%E6%8C%81%E7%BB%AD%E5%A4%9A%E9%95%BF%E6%97%B6%E9%97%B4%EF%BC%9F.png)
如果禁用 mysql INNODB 表上的键(暂停索引),该设置会持续多久?
对于类似这样的查询:
ALTER TABLE users DISABLE KEYS;
脚本结束时这些键是否重新启用? 或者它们会持续到您明确地重新打开索引?
答案1
精细手册(非常值得一读)表明该语句的效果将持续到ALTER TABLE ... ENABLE KEYS
执行相应语句为止。
答案2
ALTER TABLE ... DISABLE KEYS 和 ALTER TABLE ... ENABLE KEYS不适用于 InnoDB。
我做了一些额外的调查,并从 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 的银河帝国的中心。我不会屏息期待即将到来的文档更改。