Mysql 8.0 임시 테이블 생성 조건
Aurora MySQL 버전 3의 새로운 임시 테이블 동작
가변 길이 데이터 타입의 효율적인 스토리지 제공
바이너리 오브젝트 타입 서포트
글로벌 메모리 영역에서의 관리
mmap 파일에 의한 overflow
internal_tmp_mem_storage_engine = MEMORY로 설정하면 MEMORY engine을 사용
아래 옵션을 통해 테이블당 사용가능한 메모리를 설정할 수 있다.
tmp_table_size
max_heap_table_size
Aurora MySQL cluster reader에는 무조건 TempTable engine만 사용할 수 있다.
Aurora MySQL: aurora_tmptable_enable_per_table_limit가 ON으로 설정되면 TempTable engine도 위 옵션을 사용하여 전역이 아니라 테이블당 memory size를 설정할 수 있다.
In Aurora MySQL version 3.04 and higher, tmp_table_size also defines the maximum size of temporary tables created by the TempTable storage engine when the aurora_tmptable_enable_per_table_limit DB parameter is set to ON
TempTable engine은 각 세션별로 생성하는 임시 테이블 생성을 위한 전역 memory pool을 관리하며 현재 default 1GB 로 설정되어있다. temptable_max_ram
show variables like 'temptable_max_ram'
temptable_max_ram 가 모두 점유 중일 때는, 2가지 중 하나를 선택할 수 있다.
TempTable engine은 마찬가지로 mmap overflow를 위한 전역 변수를 관리하며 library는 default 1GB 로 되어있다. temptable_max_mmap
show variables like 'temptable_max_mmap'
temptable_max_mmap=0으로 설정하면 InnoDB internal temporary tables on disk 로 동작한다.
만약 temptable_max_mmap 설정값을 넘어서게 되면 아래 에러가 발생합니다.
ERROR 1114 (HY000): The table '/rdsdbdata/tmp/#sqlxx_xxx' is full