使用 MySQL,“ALTER TABLE ... DISABLE KEYS;”会持续多久?最后声明?

Dan*_*ley 12 mysql database database-administration indexing

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

对于像这样的查询:

ALTER TABLE users DISABLE KEYS;
Run Code Online (Sandbox Code Playgroud)

是否在脚本结束时重新启用密钥? 或者它们会持续到您明确重新打开索引?

wom*_*ble 7

Fine Manual(非常值得一读)建议该语句的效果持续到ALTER TABLE ... ENABLE KEYS执行相应的语句为止。


Rol*_*DBA 5

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 的银河帝国的中间。我不会对即将到来的文档更改屏住呼吸。

  • 发表声明是一回事。同时使用大写和粗体来大喊大叫有点过分,完全没有必要。 (4认同)