home
Mysql의 algorithm=instant 이란
ALGORITHM=INSTANT는 MySQL 8.0부터 도입된 강력한 DDL최적화 기법입니다. 테이블의 메타데이터만 변경하고 테이블 데이터는 재구성하지 않는데요, 테이블에 대한 잠금 시간을 극도로 짧게 유지하는 것도 특징입니다. 사용 방법은 다음과 같습니다.
ALTER TABLE 테이블명
ADD COLUMN 컬럼명 데이터타입 [제약조건]
ALGORITHM=INSTANT;
얻을 수 이점으로는 테이블 크기에 관계없이 새 컬럼 추가가 즉시 완료되며, 서비스 중단이나 성능 저하 없이 변경 작업이 이루어질 수 있습니다. 따라서 운영 중인 대규모 데이터베이스에서 스키마 변경을 하거나, 테라바이트 규모의 테이블 수정 시 아주 유용합니다. 그 외의 활용 방안은 다음과 같습니다.
- 새 컬럼 추가 (주로 테이블 끝에)
- 컬럼의 기본값(DEFAULT) 수정
- 컬럼을 NULL 허용으로 변경
- 테이블 이름 변경
- 가상 컬럼(VIRTUAL COLUMN) 추가
- 일부 파티셔닝 작업
단, DDL 중에서도 지원되지 않는 작업이 존재합니다.
- 인덱스 관련 작업: 인덱스 추가/삭제/변경은 지원되지 않습니다.
- 외래 키 제약조건 변경: 외래 키 추가/삭제/수정 작업은 지원되지 않습니다.
- 컬럼 유형 변경: 데이터 타입 변경은 데이터 재구성이 필요하므로 지원되지 않습니다.
- 컬럼 순서 변경: 컬럼 순서 재배열은 지원되지 않습니다.
- 컬럼 이름 변경: 컬럼 이름 변경은 일반적으로 지원되지 않습니다.
- NOT NULL 제약조건 추가: 기존 데이터 검증이 필요하므로 지원되지 않습니다.
- 테이블 중간에 컬럼 추가: InnoDB 엔진의 특정 버전에서는 테이블 끝이 아닌 중간에 컬럼을 추가하는 것은 지원되지 않을 수 있습니다.
컬럼을 추가할 때나 컬럼의 기본 값을 수정할 때, nullable로 바꿀 때 유용하게 사용할 수 있겠네요