2017-12-14 28 views
0

허용해야한다 :MySQL의 5.7 테이블 변경 DDL 문 잠금하지만, 각 <a href="https://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html" rel="nofollow noreferrer">concurrent DML</a>을 허용해야 다음 쿼리 변경으로 구성되어 동시 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; 

표는 약 8000 만 항목이 있습니다. 쿼리를 실행하면 액세스가 차단 된 것처럼 보입니다.

누구나 왜 이것이 테이블을 잠 갔는지 알 수 있습니까?

LOCK=NONE을 명시 적으로 추가하면 수행 할 수 있어야하지만 (불가능할 경우 오류가 발생 함) 문서에서 잠금을 방지하기위한 필수 구문임을 분명히 알 수 없습니다.

+0

명시 적으로 'LOCK = NONE'이 다시 실행되도록 쿼리를 수정했으며 잠금없이 작동했습니다. 어떻게 든 원작이 정말로 잠그고있는 것 같습니다. – Ray

답변

0

기본적으로, 설명이 없으면 LOCK=NONE 당신은 MySql이 DML 변경을 수행하는 방법을 확신 할 수 없습니다. 잠금없이 진행할 수없고 LOCK=NONE을 지정하면 명령을 실행할 때 오류가 발생하지만 LOCK=NONE을 지정하지 않으면 잠금이 필요하지 않습니다. 기본적으로 Mysql이 alter table을 실행할 것인지 여부를 결정합니다.