14.11.4 DDL 문의 결합 또는 분리
온라인 DDL 이 도입되기 전에는 많은 DDL 작업을 하나의 ALTER TABLE
문에 결합 할 일반적인 관습이었다. 각 ALTER TABLE
문은 테이블의 복사 및 재 구축이 포함되어 있었기 때문에, 테이블에 대한 모든 변경을 1 회 다시 작성 작업에서 실행이 가능했기 때문에 같은 테이블에 몇 가지 변화를 한 번에 할 분 이 효율적이었습니다. 단점으로는 DDL 작업과 관련된 SQL 코드를 유지 보수하기 어렵고, 다른 스크립트의 재사용도 어려운 점이있었습니다. 특정 변경이 매번 달랐다하면 조금 다른 시나리오마다 새로운 복잡한 ALTER TABLE
의 구축이 필요할 수 있습니다.
내부에서 수행 할 수있는 DDL 작업의 경우는 표 14.5 "DDL 작업의 온라인 상태의 요약" 에서와 같이 효율성을 희생하지 않고 스크립트 작성 및 유지 보수를 용이하게하기 위해 DDL 작업을 개별 ALTER TABLE
문으로 분리 할 수있게되었습니다. 예를 들어, 다음과 같은 복잡한 문장을 거론하며
alter table t1 add index i1 (c1), add unique index i2 (c2), change c4_old_name c4_new_name integer unsigned;
그것을 독립적으로 테스트하고 실행할 수있는 다음과 같은보다 쉬운 부분에 분해 할 수 있습니다.
alter table t1 add index i1 (c1); alter table t1 add unique index i2 (c2); alter table t1 change c4_old_name c4_new_name integer unsigned not null;
여러 부분으로 구성된 ALTER TABLE
문은 다음과 같은 목적으로 계속 사용할 수 있습니다.
특정 순서로 실행해야하는 작업입니다. 예를 들어, 인덱스를 만드는 데 계속 그 인덱스를 사용하는 외래 키 제약 조건을 만드는 경우.
그룹으로서 성공하거나 실패하게하고 싶은 모든이 같은 특정
LOCK
절을 사용하는 작업입니다.내부에서 수행 할 수없는, 즉 계속 테이블을 복사하여 재구성하는 작업.
특수 시나리오의 정확한 하위 호환성을 위해 필요한 경우에 강제로 테이블 복사 작업을 수행하기 위해
ALGORITHM=COPY
또는old_alter_table=1
을 지정하는 작업.