MySQL 교착 상태 - 열 추가

MySQL 교착 상태 - 열 추가

요전에 불쾌한 MySQL 문제가 발생했습니다. PHPMyAdmin 인터페이스를 사용하여 'Promotions' 테이블에 두 개의 새 열(기존 열 13개, 레코드 ~750개)을 추가했습니다. 이 쿼리("ALTER TABLE.....")는 완전히 실행되지 않고 테이블을 잠그므로 'Promotions'에 대한 각 후속 쿼리가 중단되고 대기열에 추가됩니다. 이런 일이 발생했다는 것을 깨닫는 데 약 한 시간이 걸렸으며 데이터베이스를 재부팅하여 문제가 해결되었습니다.

데이터베이스 스키마 변경으로 인해 발생하는 알려진 문제와 취해야 할 표준 예방 조치가 있습니까? 나는 이전에 이런 종류의 잠금이 발생하는 것을 본 적이 없습니다.

답변1

특히 프로덕션 환경에서 mysql 테이블을 보다 원활하게 변경하려면 다음 시나리오를 고려하십시오.

1. CREATE tmp_table LIKE original_table
2. ALTER tmp_table..
3. INSERT INTO tmp_table SELECT * FROM original_table
4. RENAME original_table to orginal_table_old
5. RENAME tmp_table to original_table
6. DROP original_table_old

또한 당신은 관심을 가질 수 있습니다플러시 테이블그리고테이블 잠금 해제문서에.

편집하다: 이 문제를 해결하기 위한 대체 솔루션이 있습니다.pt-온라인-스키마-변경Percona의 도구.

관련 정보