web-dev-qa-db-ja.com

MySQLでは、「ALTER TABLE ... DISABLE KEYS;」はどのくらいの期間行われますか。ステートメントは最後ですか?

Mysql INNODBテーブルのキーを無効にすると(インデックス作成の一時停止)、その設定はどのくらい続きますか?

次のようなクエリの場合:

ALTER TABLE users DISABLE KEYS;

スクリプトの最後にキーが再度有効になりますか?または、インデックスを明示的にオンに戻すまでキーは持続しますか?

12

Fine Manual (読む価値がある)は、対応するALTER TABLE ... ENABLE KEYSステートメントが実行されるまで、そのステートメントの効果が持続することを示唆しています。

7
womble

実際には、ALTER TABLE ... DISABLE KEYSおよびALTER TABLE ... ENABLE KEYSは機能しません!!!!

2011年2月13日にこれに対処しました。

私はいくつかの追加の調査を行い、InnoDBの母会社であるInnoBase Oy(Oracle Borgで7 of 9になる前)から、これが実際にそうであることがわかりました。

このリンクは、DISABLE KEYSと外部キーを一緒に無効にすることを推奨しています。両方は不要だと思いますが、これは明らかに誰かのために機能しました。

UPDATE 2011-07-18 12:35 EDT

MySQLに残された悪を明らかにするので、これは非常に良い質問です。 mysqldumpプログラムは、作成の前後のDISABLE KEYSおよびENABLE KEYSを盲目的に削除し、ストレージエンジンに関係なくすべてのテーブルにロードします。 DISABLE KEYSとENABLE KEYSは、MyISAMに対して適切に機能するため、InnoDBテーブルでは機能しないため(最良の場合は効果がありません)、この未知の事実はMySQLコミュニティによってより適切に文書化されます。 MySQLはOracleとして知られている銀河帝国の真ん中にあります。今後のドキュメントの変更については、息を止めません。

6
RolandoMySQLDBA