Loading...
MySQL 9.5 Reference Manual 9.5의 17.12.3 Online DDL Space Requirements의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Online DDL 작업에 대한 디스크 공간 요구 사항은 아래에 요약되어 있습니다. 이러한 요구 사항은 즉시 수행되는 작업에는 적용되지 않습니다.
Online DDL 작업이 인덱스를 생성하거나 테이블을 변경할 때, temporary log file은 동시 DML을 기록합니다. Temporary log file은 innodb_sort_buffer_size 값에 의해 필요에 따라 확장되며, 최대 크기는 innodb_online_alter_log_max_size에 의해 지정됩니다.
작업이 오랜 시간이 걸리고 동시 DML이 테이블을 많이 변경하여 temporary log file의 크기가 innodb_online_alter_log_max_size 값을 초과하면, Online DDL 작업은 DB_ONLINE_LOG_TOO_BIG 오류와 함께 실패하고, 커밋되지 않은 동시 DML 작업은 롤백됩니다. 큰 innodb_online_alter_log_max_size 설정은 Online DDL 작업 중 더 많은 DML을 허용하지만, 기록된 DML을 적용하기 위해 DDL 작업의 끝부분에서 테이블이 잠기는 기간도 늘어납니다.
innodb_sort_buffer_size 변수는 temporary log file read 버퍼와 write 버퍼의 크기도 정의합니다.
테이블을 재빌드하는 Online DDL 작업은 인덱스 생성 중에 MySQL 임시 디렉터리($TMPDIR on Unix, %TEMP% on Windows, 또는 --tmpdir로 지정된 디렉터리)에 temporary sort file을 기록합니다. Temporary sort file은 원래 테이블이 있는 디렉터리에는 생성되지 않습니다.
각 temporary sort file은 하나의 컬럼 데이터를 담을 수 있을 만큼 충분히 크며, 각 sort file은 그 데이터가 최종 테이블 또는 인덱스로 병합되면 제거됩니다. Temporary sort file이 관련된 작업은 테이블과 인덱스에 있는 데이터 양에 해당하는 임시 공간이 필요할 수 있습니다. Online DDL 작업이 데이터 디렉터리가 위치한 파일 시스템의 사용 가능한 모든 디스크 공간을 사용하면 오류가 보고됩니다.
MySQL 임시 디렉터리가 sort file을 담기에 충분히 크지 않은 경우, tmpdir을 다른 디렉터리로 설정하십시오. 또는 innodb_tmpdir을 사용하여 Online DDL 작업 전용의 별도 임시 디렉터리를 정의할 수도 있습니다. 이 옵션은 큰 temporary sort file로 인해 발생할 수 있는 임시 디렉터리 오버플로를 방지하는 데 도움을 주기 위해 도입되었습니다.
테이블을 재빌드하는 일부 Online DDL 작업은 원래 테이블과 동일한 디렉터리에 temporary intermediate table file을 생성합니다. Intermediate table file은 원래 테이블 크기에 해당하는 공간을 필요로 할 수 있습니다. Intermediate table file 이름은 #sql-ib 접두사로 시작하며, Online DDL 작업 중에만 잠시 나타납니다.
innodb_tmpdir 옵션은 intermediate table file에는 적용되지 않습니다.
17.12.2 Online DDL Performance and Concurrency
17.12.4 Online DDL Memory Management