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


12

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

对于像这样的查询:

ALTER TABLE users DISABLE KEYS;

脚本结尾是否重新启用了密钥? 还是持续到您显式打开索引?


这个问题值得+1,以帮助其他人了解有关DISABLE KEYS,ENABLE KEYS和InnoDB的知识。
RolandoMySQLDBA 2011年


Answers:


7

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


6

实际上,ALTER TABLE ... DISABLE KEY和ALTER TABLE ... ENABLE KEY不起作用!

我在2011年2月13日解决了这个问题。

我进行了一些额外的挖掘,并从InnoDB的母公司InnoBase Oy(在Oracle Borg中被评为9分之7)之前发现确实如此。

该链接建议一起执行“禁用密钥”和“禁用外键”。尽管我认为两者都是不必要的,但这显然对某人有用。

更新2011-07-18 12:35 EDT

这是一个很好的问题,因为它暴露了MySQL中遗留的弊端。mysqldump程序会在创建过程中盲目删除DISABLE KEYS和ENABLE KEYS,并在每个表上加载而不考虑存储引擎。由于DISABLE KEYS和ENABLE KEYS在InnoDB表上不起作用(最好是没有效果),因为它对于MyISAM正常工作,因此MySQL社区应该更好地记录这一未知事实。哦,是的,MySQL位于银河帝国的中间,即Oracle。我不会为即将到来的文档更改屏住呼吸。


3
发表声明是一回事。同时使用大写字母和粗体大喊大叫有点多余,完全没有必要。
John Gardeniers

1
@John:对不起,我似乎太热情了。我对任何人都不生气。没有充分记录针对InnoDB的ALTER TABLE DISABLE / ENABLE KEY。Oracle也不会改进。
RolandoMySQLDBA 2011年

@RolandoMySQLDBA有什么解决方法可以避免mysqldump在转储文件中放置DISABLE KEYS和ENABLE KEYS?
pahnin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.