Loading...
MySQL 9.5 Reference Manual 9.5의 17.12.8 Online DDL Limitations의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
다음 제한 사항들은 online DDL 작업에 적용됩니다:
index를 TEMPORARY TABLE에 생성할 때는 table이 복사됩니다.
table에 ON...CASCADE 또는 ON...SET NULL 제약 조건이 있는 경우, ALTER TABLE 절의 LOCK=NONE은 허용되지 않습니다.
in-place online DDL 작업이 완료되기 전에, 해당 작업은 table에 대해 메타데이터 락을 보유한 트랜잭션들이 커밋 또는 롤백할 때까지 기다려야 합니다. online DDL 작업은 실행 단계 동안 잠시 table에 대한 배타적 메타데이터 락이 필요할 수 있으며, table 정의를 갱신하는 마지막 단계에서는 항상 배타적 메타데이터 락이 필요합니다.
따라서 table에 대해 메타데이터 락을 보유한 트랜잭션들은 online DDL 작업을 블록시킬 수 있습니다. table에 대해 메타데이터 락을 보유한 트랜잭션들은 online DDL 작업 이전 또는 수행 중에 시작되었을 수 있습니다. table에 대한 메타데이터 락을 보유한 장기 실행 또는 비활성 트랜잭션은 online DDL 작업의 타임아웃을 초래할 수 있습니다.
in-place online DDL 작업을 실행할 때, ALTER TABLE 문을 실행하는 스레드는 다른 커넥션 스레드에서 동일한 table에 대해 동시에 실행된 DML 작업의 online 로그를 적용합니다. DML 작업이 적용될 때, 비록 그 중복 엔트리가 일시적인 것이며 나중의 online 로그 엔트리에 의해 되돌려질 것이라 하더라도, duplicate key entry 에러(ERROR 1062 (23000): Duplicate entry)가 발생할 수 있습니다. 이는 트랜잭션 동안 제약 조건이 항상 유지되어야 하는 InnoDB의 foreign key 제약 조건 체크 개념과 유사합니다.
InnoDB table에 대한 OPTIMIZE TABLE은 table을 재구축하고 index 통계를 갱신하며 clustered index에서 사용되지 않는 공간을 해제하는 ALTER TABLE 작업으로 매핑됩니다. secondary index는 key가 primary key에 나타난 순서대로 삽입되기 때문에 그다지 효율적으로 생성되지 않습니다.
OPTIMIZE TABLE은 일반 및 파티션된 InnoDB table 재구축을 위한 online DDL 지원 추가와 함께 지원됩니다.
temporal column(DATE, DATETIME 또는 TIMESTAMP)을 포함하고 ALGORITHM=COPY를 사용하여 재구축되지 않은 MySQL 5.6 이전에 생성된 table은 ALGORITHM=INPLACE를 지원하지 않습니다. 이 경우, ALTER TABLE ... ALGORITHM=INPLACE 작업은 다음과 같은 에러를 반환합니다:
1ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. 2Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
다음 제한 사항들은 일반적으로 table 재구축이 수반되는 대형 table에 대한 online DDL 작업에 적용됩니다:
online DDL 작업을 일시 중지하거나 online DDL 작업에 대한 I/O 또는 CPU 사용량을 제한(throttle)하는 메커니즘이 없습니다.
online DDL 작업이 실패할 경우, 해당 작업의 롤백 비용이 많이 들 수 있습니다.
장기 실행 online DDL 작업은 복제 지연을 유발할 수 있습니다. online DDL 작업은 레플리카에서 실행되기 전에 소스에서 실행이 완료되어야 합니다. 또한, 소스에서 동시에 처리되었던 DML은 레플리카에서 DDL 작업이 완료된 이후에만 처리됩니다.
대형 table에서 online DDL 작업을 실행하는 것과 관련된 추가 정보는 Section 17.12.2, “Online DDL Performance and Concurrency”를 참조하십시오.
17.12.7 Online DDL Failure Conditions
17.13 InnoDB Data-at-Rest Encryption