2017-12-14 9 views
0

は、次のクエリは、それぞれconcurrent DMLを可能にしなければならない変更で構成できるようにする必要がありますのMySQL 5.7 ALTER TABLE DDL文のロックが、同時DML

ALTER TABLE sometable 
    DROP INDEX index1_on_column1, 
    DROP INDEX index2_on_column2, 
    DROP INDEX index3_on_column1_and_column2, 
    DROP COLUMN column1, 
    DROP COLUMN column2; 

の表は、約80 100万エントリを持っています。クエリを実行すると、アクセスがブロックされた/ロックされたように見えます。

なぜ、これがテーブルをロックしているのか誰にもわかりますか?

LOCK=NONEを明示的に追加すると、それを実行できる(またはできない場合はエラーをスローする)ことを強制する必要がありますが、ドキュメントからは、ロックを防止するための必須のステートメントであることが明確ではありません。

+0

明示的な 'LOCK = NONE'が再度実行され、ロックされずに動作するようにクエリを修正しました。何とかオリジナルは本当にロックされていたようだ。 – Ray

答えて

0

したがって、基本的に、明白なことなしにLOCK=NONEは、MySqlがDMLの変更を実行する方法を特定できません。ロックなしで進めることができず、LOCK=NONEを指定した場合は、コマンド実行時にエラーが発生しますが、LOCK=NONEを指定せずにロックが不要な場合は、Mysqlがalter tableを実行するかどうかを指定します。

関連する問題