Online DDL

Gaeun Kim·2024년 10월 5일

Database Study

목록 보기
4/5

Online DDL을 통한 index 추가

실제 서비스 중에 스키마 수정이 필요한 경우

실제 서비스를 운영하다 보면 스키마 수정이 필요한 상황이 옵니다...신규 기능 배포를 위한 컬럼 추가, 성능 최적화, 파티셔닝(partitioning) 등...
이러한 스키마 변경 작업은 서비스 중단을 유발할 수 있습니다. 특히, 서비스가 진행 중인 상태에서 테이블을 변경하면 Table Lock으로 인해 서비스의 읽기/쓰기 작업이 차단될 수 있습니다.


Online DDL이란?

Online DDL은 서비스 중단 없이 테이블 구조 변경을 가능하게 하는 MySQL의 기능입니다.

  • 테이블 구조를 변경할 때 가용성을 유지하면서 변경을 수행.
  • MySQL에서는 InnoDB 스토리지 엔진을 통해 Online DDL 작업을 지원.
  • 추가적인 설치나 설정이 필요 없고, MySQL 내장 기능으로 제공됨.

Online DDL Option

ALTER TABLE table_name ADD COLUMN column_name VARCHAR(255), ALGORITHM=INPLACE, LOCK=NONE;
  • ALGORITHM
    • INPLACE: 테이블 Lock 없이 온라인으로 작업 수행
    • COPY: 테이블 복사본을 생성해서 작업, Table Lock이 필요할 수 있음
  • LOCK
    • NONE: 읽기 및 쓰기 작업 모두 허용 (완전 온라인).
    • SHARED: 읽기 작업은 허용, 쓰기 작업은 차단.
    • EXCLUSIVE: 모든 작업 차단 (완전 잠금).

Online DDL 특징 및 장점

  • 비차단 작업
    • 테이블을 변경하는 동안 읽기/쓰기 작업 가능
    • 전체 테이블 Lock이 필요하지 않음
  • 효율성
    • 테이블 복사본을 만들지 않고, 필요한 부분만 수정
    • 디스크, 메모리 사용량이 적어 DB 성능에 미치는 영향을 최소화함

Online DDL 한계

  • 제한된 작업 범위
    • 모든 DDL 작업이 완전히 온라인으로 처리되지 않음.
    • 복잡한 작업(예: 일부 인덱스 재구성, 파티셔닝 변경 등)은 여전히 테이블 복사(COPY)가 필요할 수 있어 잠금을 피할 수 없음.
    • MySQL 버전에 따라 지원되는 Online DDL 작업이 다를 수 있음.
      • 예를 들어, MySQL 5.6에서는 많은 작업이 INPLACE 알고리즘으로 처리되지 않고, MySQL 8.0에서는 더 많은 작업이 개선됨.
  • 작업 중 성능 저하
    • Online DDL이라 해도 대규모 테이블에서 작업이 수행될 경우 메모리디스크 I/O 리소스 소모가 커질 수 있음.
      • 이는 데이터베이스 성능에 영향을 미치고, 특히 트래픽이 많은 서비스에서는 응답 시간이 느려질 수 있음.
    • 메타데이터 락(Metadata Lock)이 걸리는 순간에는 잠깐 동안의 잠금이 발생할 수 있어 트랜잭션의 진행이 지연될 수 있음.
  • 작업 시간 증가
    • 데이터가 많은 테이블에서 Online DDL 작업은 오프라인 작업보다 더 오랜 시간이 걸릴 수 있음.
      • DDL 작업이 메모리와 디스크를 최적화하면서 수행되기 때문
  • 대규모 테이블에서의 리스크
    • Online DDL 작업이 대규모 테이블에서 실패할 경우 작업 롤백이 발생할 수 있으며, 롤백 과정에서도 리소스를 많이 사용하게 됨. 이 경우 서비스 성능에 큰 영향을 미칠 수 있음.
profile
데이터 & 서버 공부중

0개의 댓글