CREATE TEMORARY TABLE
명령으로 만든 임시 테이블과는 다르다.CREATE TEMORARY TABLE
명령으로 만든 임시 테이블은 사용자가 생성한 임시 테이블.internal_tmp_mem_storage_engine
시스템 변수를 이용해 메모리용 임시 테이블을 선택할 수 있다.temptable_max_ram
시스템 변수로 제어할 수 있다.tmp_table_size
max_heap_table_size
temptable_use_mmap
시스템 변수로 MMAP 파일로 기록할지 InnoDB 테이블로 전환할지 설정할 수 있다.tmpdir
시스템 변수에 정의된 디렉터리에 저장된다.💡 디스크에 저장된 임시 테이블이 저장되는 파일
MySQL 서버는 디스크의 임시 테이블을 생성할 때, 파일 오픈 후 즉시 파일 삭제를 실행하고, 데이터를 저장하기 위해 해당 임시 테이블을 사용한다.
그러면 MySQL 서버가 종료되거나 해당 쿼리가 종료되면 임시 테이블은 즉시 사라진다.
또한 MySQL 서버 내부의 다른 스레드 또는 MySQL 서버 외부의 사용자가 임시 테이블을 위한 파일을 변경 및 삭제하거나 볼 수 없게 한다.
리눅스나 유닉스 계열의 운영체제에서는 임시 테이블이 몇 개나 사용되는지 정도는 확인할 수 있는데, 이때 파일의 상태는 ‘deleted’로 표시될 것이다.
internal_tmp_disk_storage_engine
시스템 변수에 설정된 스토리지 엔진이 사용된다.select_type
칼럼이 UNION RESULT인 경우)select_type
이 DERIVED인 쿼리select_type
칼럼이 UNION RESULT인 경우)도 항상 내부 임시 테이블을 사용해서 결과를 모은 후 결과를 반환했다.tmp_table_size
또는 max_heap_table_size
시스템 변수보다 크거나temptable_max_ram
시스템 변수 값보다 큰 경우-- 현재 세션의 상태 값 초기화
FLUSH STATUS;
-- // SELECT 쿼리 실행
-- 상태 조회 명령 실행
SHOW SESSION STATUS LIKE 'Created_tmp%';