MySQL의 테이블 레벨 잠금은 특히 대용량 데이터셋의 경우 비즈니스 시스템 성능에 상당한 영향을 미칠 수 있습니다. `ALTER TABLE` 작업을 실행할 때 MySQL은 기본적으로 테이블을 잠가 작업이 완료될 때까지 다른 트랜잭션을 차단합니다. 이로 인해 쿼리 지연, 쓰기 작업 차단 및 시스템 속도 저하가 발생할 수 있습니다. 그러나 최신 버전의 MySQL에서는 InnoDB 저장 엔진을 사용하여 테이블에 열을 추가하는 경우 반드시 테이블을 잠글 필요는 없습니다. MySQL 5.6에서는 온라인 DDL 작업이 도입되어 특정 테이블 수정 작업을 테이블 잠금 없이 수행할 수 있게 되었습니다. MySQL 5.6에서 열 추가는 `ALGORITHM=INPLACE`를 사용하여 전체 테이블 잠금을 피할 수 있는 온라인 작업입니다. MySQL 8.0은 온라인 DDL 작업을 더욱 최적화하여 대부분의 `ALTER TABLE` 작업을 테이블 잠금 없이 수행할 수 있도록 했습니다. MySQL 8.0은 원자적 DDL, 즉시 메타데이터 업데이트, 증분 메타데이터 업데이트와 같은 기능을 통해 테이블 잠금 시간을 줄이고 동시 성능을 향상시킵니다. 이러한 최적화에도 불구하고, 애플리케이션에 미치는 영향을 최소화하기 위해 업무량이 적은 시간에 `ALTER TABLE` 작업을 수행하는 것이 여전히 권장됩니다.
dev.to
Schema Changes in MySQL: Will Your Table Be Locked?
Create attached notes ...
