HPL/SQL - 네이티브/관리형 임시 테이블

HPL/SQL - 네이티브/관리형 임시 테이블

HPL/SQL은 임시 테이블(temporary table)을 다루는 두 가지 방식을 제공해요. nativemanaged 방식입니다. hplsql.temp.tables 옵션으로 정하며 기본값은 native예요.

출처: 문서

본문

네이티브 임시 테이블(Native Temporary Tables)

native 임시 테이블을 사용하면 HPL/SQL은 하부의 HiveServer가 임시 테이블을 관리하도록 의존해요.

HPL/SQL은 DECLARE TEMPORARY TABLE 문을 Hive의 CREATE TEMPORARY TABLE로 변환해요.

관리형 임시 테이블(Managed Temporary Tables)

hplsql.temp.tablesmanaged로 설정되면 HPL/SQL은 HiveServer에 일반 테이블을 만들고, 세션이 끝날 때 자동으로 삭제해요.

스키마 이름과 위치는 각각 hplsql.temp.tables.schemahplsql.temp.tables.location 옵션으로 정합니다.

또한 여러 세션 간 이름 충돌을 막기 위해 테이블 이름에 UUID가 추가돼요. 예를 들어 임시 테이블 temp1을 선언하면 HPL/SQL은 실제로 temp1_3fc162e0590f4e17ae141385cc0e8447 같은 이름의 테이블을 만듭니다.

예제(Example):

관리형 임시 테이블을 만들고 다른 SQL 문에서 사용해 볼게요.

SET hplsql.temp.tables = managed;

DECLARE TEMPORARY TABLE temp1
(
   c1 INT,
   c2 STRING
);

INSERT INTO temp1 SELECT 1, 'A';

SELECT * FROM temp1;

temp1에 데이터를 넣고 다시 조회하는 흐름이에요. 세션이 끝나면 이 테이블은 자동으로 사라집니다.

관련 문서(See also):

  • CREATE LOCAL TEMPORARY TABLE
  • CREATE VOLATILE TABLE
  • DECLARE TEMPORARY TABLE

더 알아보기 (Learn more)

임시 테이블은 세션 안에서만 유효한 중간 결과물을 다룰 때 유용해요. 관리형 방식은 자동 정리 덕분에 여러 세션이 동시에 돌아도 이름 충돌 없이 안전합니다.