MySQL에서 임시 테이블(Temporary Table)은 해당 테이블을 생성한 세션(Session)에 종속적으로 존재합니다. 따라서
세션이 종료되면 임시 테이블은 자동으로 삭제
됩니다.세션 종료 후 임시 테이블의 상태
MySQL 연결이 끊기거나 세션이 종료되는 순간, 그 세션에서 생성했던 모든 임시 테이블은 MySQL 서버에 의해 자동으로 제거(DROP)됩니다. 사용자가 직접 삭제하지 않아도 되며, 별도의 정리 작업 없이 리소스가 반환됩니다.
예를 들어, 세션 종료 후 다시 로그인하여 다음과 같이 SELECT 명령을 실행하면 데이터가 존재하지 않습니다.
SELECT * FROM temp_table;위 쿼리를 실행하면 결과가 반환되지 않을 뿐만 아니라, 애초에 해당 임시 테이블 자체가 더 이상 존재하지 않기 때문에 'Table doesn't exist'와 같은 오류가 발생할 수 있습니다.
왜 임시 테이블이 사라질까?
임시 테이블은 세션 범위(scope)를 가지기 때문입니다. 즉, 동일한 사용자 계정으로 다시 로그인하더라도 이전 세션에서 만든 임시 테이블에는 접근할 수 없습니다. 이는 임시 테이블이 사용자 단위가 아닌 연결(커넥션) 단위로 관리되기 때문입니다.
정리
- 임시 테이블은 생성된 세션이 유지되는 동안에만 존재합니다.
- 세션이 종료되면 MySQL이 자동으로 임시 테이블을 삭제합니다.
- 다시 로그인해도 이전 임시 테이블은 복구되지 않으며, 필요하다면 새로 생성해야 합니다.
따라서 여러 쿼리나 절차에 걸쳐 데이터를 유지해야 한다면 일반 테이블을 사용하고, 한 세션 내에서만 필요한 중간 결과를 저장할 때 임시 테이블을 활용하는 것이 바람직합니다.