본문 바로가기

Study/SQL

MySQL | Temporary Table

Temporary Table 이란?

MySQL 단일 세션에서 여러번 사용할 수 있는 데이터 집합을 임시적으로 저장해둔 테이블을 칭한다.

 

일례로, 대용량의 데이터가 저장된 테이블에서 특정 값들만 추출하여 간결하게 보려고 할 때, 해당 테이블 전체를 활용하게 되면 성능이나 비용 부분에서 부담이 생길 경우가 생길 수 있다.

이 때 Temporary Table을 이용하여 간결하게 데이터를 활용할 수 있다. 

 

Temporary Table 특징

  • 테이블 생성시 CREATE TEMPORARY TABLE \테이블명\  의 구조를 가진다.
    • Temporary Table의 경우 해당 테이블을 생성한 클라이언트 단에서만 확인이 가능하다
    • 서로 다른 클라이언트와 이름이 중복되어도 오류없이 생성 가능하나, 동일한 세션에서 이름이 중복될 수 없다.
    • 또한 일반 테이블과 같은 이름을 가질 수 있으나 권장되지 않는다. 만약 같은 이름의 Temporary Table을 생성한 경우 기존의 테이블에서의 엑세스 할 수 없게되며, Temporary Table을 삭제하여 다시 엑세스할 수 있다. 
      그러나 사용하며 혼란을 야기하거나, 데이터 손실이 따를 수 있으므로 다른 이름을 사용하도록 한다.
  • 테이블 삭제는 세션이 종료 혹은 연결이 종료되면 자동으로 삭제된다.
    • DROP  TEMPORARY TABLE \테이블명\ 로 삭제도 가능하다.
    • 이 때, TEMPORARY 를 사용하지 않아도 삭제할 수 있으나, 같은 이름의 Temporary가 아닌 일반 테이블이 존재하는 경우 해당 테이블이 삭제될 수 있으므로 TEMPORARY 와 함께 명시하여 삭제하도록한다.

 

Temporary Table 쿼리 예시

-- Case 1
CREATE TEMPORARY TABLE temp_employee
(EmployeeId int
,JobTitle varchar(50)
,Salary int);


INSERT INTO temp_employee
SELECT * 
FROM SQLTutorial.employeeSalary
WHERE Salary > 36000;

DROP TEMPORARY TABLE temp_employee;
  • TEMPORARY 명령어와 함께 컬럼명, 데이터 타입을 명시하여 테이블을 생성한다.
  • INSERT 문으로 VALUES를 직접 삽입할 수도 있고, 원하는 기존 테이블의 데이터를 추출하여 Temporary Table의 데이터를 삽입하여 활용할 수 있다.
  • 사용을 완료한 Temporary Table은 세션 혹은 연결 종료로 삭제할 수 있고 예시 코드와 같이 TEMPORARY 명령어와 함께 테이블을 삭제할 수 있다.
-- Case 2
CREATE TEMPORARY TABLE temp_demo
SELECT *
FROM employeeDemograhpics
WHERE gender = 'Female';

SELECT *
FROM temp_demo;
  • Temporary Table 생성과 동시에 원하는 기존 테이블의 데이터를 추출하여 Temporary Table의 데이터를 삽입하여 활용할 수 있다.

 

 

Temporary Table 확인

MySQL은 임시 테이블이 있는지 직접 확인하는 기능이나 명령문을 제공하지 않는다.

프로시저 등을 활용하여 확인하는 방법이 있으나, 프로시저는 다음 포스팅에서 다루고자 한다.

(혹 프로시저를 활용하여 확인하고자 한다면, https://www.mysqltutorial.org/mysql-temporary-table/ 참고)


Resource

https://youtu.be/RF0LE3hYFrI

https://www.mysqltutorial.org/mysql-temporary-table/

 

MySQL Temporary Table | Create, Use and Drop MySQL Temporary Tables

This tutorial discusses MySQL temporary table and shows you step by step how to create, use and drop temporary tables.

www.mysqltutorial.org

 

+ 실제 사용 사례

https://sanghye.tistory.com/23

 

[MYSQL] TEMPORARY TABLE 이란

최근 특정 업체와 결제 서비스에 관련해 연동작업을 진행하면서 대량 발송을 위해 배치작업이 요구되는 사항이 발생하였습니다. 대량 발송 시 요구되었던 작업이 발송을 하기 위해 건수 및 발

sanghye.tistory.com

 

 

+ Temporary Table 관리

 

https://dev.mysql.com/doc/refman/5.7/en/innodb-temporary-tablespace.html#:~:text=The%20temporary%20tablespace%20receives%20a,if%20the%20server%20halts%20unexpectedly.

 

 

MySQL :: MySQL 5.7 Reference Manual :: 14.6.3.5 The Temporary Tablespace

14.6.3.5 The Temporary Tablespace Non-compressed, user-created temporary tables and on-disk internal temporary tables are created in a shared temporary tablespace. The innodb_temp_data_file_path variable defines the relative path, name, size, and attribut

dev.mysql.com

https://www.percona.com/blog/mysql-disk-space-exhaustion-for-implicit-temporary-tables/

 

MySQL: Disk Space Exhaustion for Implicit Temporary Tables - Percona Database Performance Blog

Issues abound about completely exhausting the disk space on MySQL, but here is one related to InnoDB implicit temporary tables that can lead to an outage.

www.percona.com

 

'Study > SQL' 카테고리의 다른 글

PostgreSQL | Codility | SqlWorldCup  (0) 2023.03.06
PostgreSQL | Codility | SqlEventsDelta  (0) 2023.03.06
MySQL | HackerRank | Ollivander's Inventory  (0) 2023.02.07
MySQL | HackerRank | Top Earners  (0) 2023.02.06
MySQL | HackerRank | Top Competitors  (0) 2023.01.31