Loading...
MySQL 9.5 Reference Manual 9.5의 17.12 InnoDB and Online DDL의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
17.12.1 Online DDL Operations
17.12.2 Online DDL Performance and Concurrency
17.12.3 Online DDL Space Requirements
17.12.4 Online DDL Memory Management
17.12.5 Configuring Parallel Threads for Online DDL Operations
17.12.6 Simplifying DDL Statements with Online DDL
17.12.7 Online DDL Failure Conditions
17.12.8 Online DDL Limitations
online DDL 기능은 instant 및 인플레이스 table 변경과 동시 DML을 지원합니다. 이 기능의 장점은 다음과 같습니다:
분 단위나 시간 단위로 table을 사용할 수 없게 만드는 것이 실용적이지 않은, 바쁜 프로덕션 환경에서 향상된 응답성과 가용성을 제공합니다.
인플레이스 작업의 경우, DDL 작업 중 LOCK 절을 사용하여 성능과 동시성 간의 균형을 조정할 수 있습니다. 자세한 내용은 The LOCK clause를 참조하십시오.
table-copy 방식보다 더 적은 디스크 공간 사용과 I/O 오버헤드가 필요합니다.
일반적으로 online DDL을 활성화하기 위해 특별히 할 일은 없습니다. 기본적으로, MySQL은 허용되는 경우 가능한 한 적은 locking으로, 작업을 instant 또는 인플레이스로 수행합니다.
ALTER TABLE statement의 ALGORITHM 및 LOCK 절을 사용하여 DDL 작업의 여러 측면을 제어할 수 있습니다. 이러한 절은 statement 끝에 배치되며, table 및 column 지정과는 쉼표로 구분됩니다. 예를 들면 다음과 같습니다:
1ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE;
LOCK 절은 인플레이스로 수행되는 작업에 사용할 수 있으며, 작업 중 table에 대한 동시 접근 정도를 미세 조정하는 데 유용합니다. instant로 수행되는 작업에는 LOCK=DEFAULT만 지원됩니다.
ALGORITHM 절은 주로 성능 비교와, 문제가 발생할 경우 이전 table-copying 동작으로 되돌리기 위한 용도로 의도되었습니다. 예를 들면 다음과 같습니다:
인플레이스 ALTER TABLE 작업 중에 table을 읽기, 쓰기 또는 둘 다에 사용할 수 없게 만드는 일을 실수로 방지하려면, ALTER TABLE statement에 LOCK=NONE(읽기와 쓰기 허용) 또는 LOCK=SHARED(읽기 허용)와 같은 절을 지정합니다. 요청된 동시성 수준을 사용할 수 없는 경우 작업은 즉시 중단됩니다.
알고리즘 간 성능을 비교하려면, ALGORITHM=INSTANT, ALGORITHM=INPLACE, ALGORITHM=COPY로 statement를 실행합니다. 또한 old_alter_table configuration option을 활성화하여 ALGORITHM=COPY 사용을 강제할 수도 있습니다.
table을 복사하는 ALTER TABLE 작업으로 server가 오랫동안 점유되는 것을 피하려면, ALGORITHM=INSTANT 또는 ALGORITHM=INPLACE를 포함합니다. 지정된 알고리즘을 사용할 수 없는 경우 statement는 즉시 중단됩니다.
17.11.5 Reclaiming Disk Space with TRUNCATE TABLE
17.12.1 Online DDL Operations