-
MySQL의 숨겨진 공간은 환경 변수 TMPDIR 설정을 통해 구현됩니다. TMPDIR이 설정되지 않은 경우 MySQL은 시스템의 기본값(보통 /tmp, /var/tmp 또는 /usr/tmp)을 사용합니다. MySQL은 환경 변수 TMPDIR의 값을 임시 파일이 저장되는 디렉터리의 경로 이름으로 사용합니다. TMPDIR이 설정되지 않은 경우 MySQL은 시스템의 기본값(보통 /tmp, /var/tmp 또는 /usr/tmp)을 사용합니다. 임시 파일 디렉터리가 포함된 파일 시스템이 너무 작은 경우 mysqld에 "-tmpdir" 옵션을 사용하여 충분한 공간이 있는 파일 시스템의 디렉터리를 지정할 수 있습니다.
MySQL 5.1에서는 "-tmpdir" 옵션을 라운드 로빈 방식으로 사용되는 여러 경로 목록으로 설정할 수 있습니다. Unix 플랫폼에서는 경로가 콜론 문자 ":"로 구분되고, Windows, NetWare 및 OS/2 플랫폼에서는 경로가 세미콜론 문자 ";"로 구분됩니다. 로드를 효과적으로 분산하려면 이러한 경로가 동일한 디스크의 다른 파티션이 아닌 다른 실제 디스크에 있어야 합니다.
MySQL 서버가 복제 슬레이브로 사용되는 경우 "--tmpdir"은 메모리 기반 파일 시스템의 디렉터리나 서버 호스트가 다시 시작될 때 지워지는 디렉터리를 가리키도록 설정하면 안 됩니다. 복제 슬레이브 서버의 경우 임시 테이블을 복사하거나 LOAD DATA INFILE 작업을 수행할 수 있도록 시스템을 다시 시작할 때 일부 임시 파일을 유지해야 합니다. 서버를 다시 시작할 때 임시 파일 디렉터리의 파일이 손실되면 복제가 실패합니다.
MySQL은 모든 임시 파일을 암시적으로 생성합니다. 이런 방식으로 mysqld가 종료될 때 모든 임시 파일이 삭제되도록 보장할 수 있습니다. 숨김 파일 사용의 단점은 파일 시스템을 차지하는 대용량 임시 파일이 임시 파일 디렉터리와 동일한 위치에 표시되지 않는다는 것입니다.
정렬(ORDER BY 또는 GROUP BY)을 수행할 때 MySQL은 일반적으로 하나 이상의 임시 파일을 사용합니다. 필요한 최대 디스크 공간은 다음 식으로 결정됩니다.
(정렬된 내용의 길이 + sizeof(행 포인터))
* 일치하는 행 수
*2
"행 포인터"(행 포인터)의 크기는 일반적으로 4바이트이지만 향후 대형 테이블의 경우 이 값이 늘어날 수 있습니다.
일부 SELECT 쿼리의 경우 MySQL은 임시 SQL 테이블도 생성합니다. 이는 숨겨진 테이블이 아니며 SQL_* 형식의 이름을 갖습니다.
ALTER TABLE은 원래 테이블 디렉터리와 동일한 디렉터리에 임시 테이블을 생성합니다.