기능 소개
이 기능은 주로 IO 지터를 피하기 위해 대용량 데이터 파일이 있는 테이블을 삭제하는 데 사용됩니다.
DROP TABLE 명령 실행 시 시스템은 원본 데이터베이스 파일(.ibd)을 새로운 임시 파일로 이름을 변경하고 즉시 작업 성공 메시지를 반환합니다. 이 임시 파일은 매개변수 innodb_async_drop_tmp_dir에 지정된 디렉토리에 저장되며, 백엔드에서 배치로 truncate 처리가 수행됩니다. 각 truncate된 파일 크기는 매개변수 innodb_async_truncate_size(MySQL 5.6 미지원, MySQL 5.7 및 8.0 지원)에 의해 제어됩니다.
해당 기능은 사용자의 별도 조작 없이 커널이 자동으로 수행합니다. 삭제 원리는, 테이블 삭제 시 다른 디렉터리에 테이블 데이터 파일의 하드 링크를 생성하고, DROP TABLE 명령을 실행할 때 삭제되는 것은 이 하드 링크입니다. 이후 백엔드 스레드는 하드 링크 디렉터리를 스캔하여 삭제할 파일을 발견하면, 백엔드에서 drop된 테이블의 데이터 파일을 자동으로 truncate합니다.
지원 버전
커널 버전 MySQL 5.6 20220303 이상
커널 버전 MySQL 5.7 20230601 이상
커널 버전 MySQL 8.0 20200630 이상
적용 시나리오
이 기능은 삭제할 테이블 데이터 파일이 매우 큰 시나리오에 적합합니다.
사용 설명
MySQL 5.7 및 MySQL 8.0 버전 사용 설명
기능 활성화 방법
1. 비동기적 대형 테이블 삭제 기능을 사용하기 전에, 매개변수 innodb_adaptive_hash_index를 OFF로 설정합니다.
2. 매개변수 innodb_async_truncate_work_enabled를 ON으로 설정하여 비동기적 대형 테이블 삭제 기능을 활성화합니다. 매개변수 설정에 대한 자세한 내용은 인스턴스 매개변수 설정을 참조하십시오. 관련 매개변수 설명
|
innodb_adaptive_hash_index | yes | string | ON | ON/OFF | InnoDB 적응형 해시 인덱스 활성화 여부- ON: 활성화- OFF: 비활성화 |
innodb_async_truncate_work_enabled | yes | string | OFF | ON/OFF | 비동기적 대형 테이블 삭제 기능 활성화 여부- ON:활성화- OFF:비활성화 |
기능 활성화 방법
1. 비동기적 대형 테이블 삭제 기능을 사용하기 전에, 매개변수 innodb_fast_ahi_cleanup_for_drop_table을 ON으로 설정합니다.
2. 매개변수 innodb_adaptive_hash_index를 OFF로 설정합니다.
3. 매개변수 innodb_table_drop_mode를 ASYNC_DROP으로 설정하여 비동기적 대형 테이블 삭제 기능을 활성화합니다. 매개변수 설정에 대한 자세한 내용은 인스턴스 매개변수 설정 을 참조하십시오. 4. (선택) 매개변수 innodb_fast_ddl을 ON으로 설정하여 비동기적 대형 테이블 삭제 기능의 효율이 향상됩니다. FAST DDL 기능 및 관련 매개변수에 대한 자세한 내용은 FAST DDL 을 참조하십시오. 관련 매개변수 설명
|
innodb_fast_ahi_cleanup_for_drop_table | yes | string | ON | ON/OFF | 적응형 해시 인덱스의 빠른 정리 최적화 활성화 여부- ON: 활성화 (hash 정리 지연으로 인한 대형 테이블 삭제 지연 방지)- OFF: 비활성화 |
innodb_adaptive_hash_index | yes | string | OFF | ON/OFF | InnoDB 적응형 해시 인덱스 활성화 여부- ON: 활성화- OFF: 비활성화 |
innodb_table_drop_mode | yes | string | ASYNC_DROP | SYNC_DROP/ASYNC_DROP | 비동기적 대형 테이블 삭제 기능 활성화 여부- ASYNC_DROP: 비동기 모드(활성화)- SYNC_DROP: 동기 모드(비활성화) |
innodb_async_truncate_size | yes | int | 128 | 128 - 168 | 비동기적 대형 테이블 삭제 기능에서 백엔드로 truncate할 때마다 처리하는 파일 크기(단위: MB) |