TempTable engine 정리

Q·2024년 9월 24일
0

MySQL

목록 보기
8/12

Mysql 8.0 임시 테이블 생성 조건
Aurora MySQL 버전 3의 새로운 임시 테이블 동작

TempTable engine 특징

  • 가변 길이 데이터 타입의 효율적인 스토리지 제공

  • 바이너리 오브젝트 타입 서포트

  • 글로벌 메모리 영역에서의 관리

  • 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가지 중 하나를 선택할 수 있다.

    1. memory-mapped temporary files로 overflow
    2. InnoDB internal temporary tables on disk (memory → disk로 data 복사 발생)
  • 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 값은 운영 중인 인스턴스 사이즈 볼륨의 가용 범위내로 설정해야한다.
  • 만약 temptable_max_mmap 설정값을 넘어서게 되면 아래 에러가 발생합니다.

    ERROR 1114 (HY000): The table '/rdsdbdata/tmp/#sqlxx_xxx' is full

참고 자료

profile
Data Engineer

0개의 댓글

관련 채용 정보