HPL/SQL - 네이티브/관리형 임시 테이블
HPL/SQL - 네이티브/관리형 임시 테이블
HPL/SQL은 임시 테이블(temporary table)을 다루는 두 가지 방식을 제공해요. native와 managed 방식입니다. 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.tables가 managed로 설정되면 HPL/SQL은 HiveServer에 일반 테이블을 만들고, 세션이 끝날 때 자동으로 삭제해요.
스키마 이름과 위치는 각각 hplsql.temp.tables.schema와 hplsql.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)
임시 테이블은 세션 안에서만 유효한 중간 결과물을 다룰 때 유용해요. 관리형 방식은 자동 정리 덕분에 여러 세션이 동시에 돌아도 이름 충돌 없이 안전합니다.