임시 및 일시적 테이블 관련 작업하기

Snowflake는 테이블을 생성할 때 기본 테이블 타입인 영구 테이블 외에도 테이블을 임시 또는 일시적으로 정의하는 것을 지원합니다. 이러한 타입의 테이블은 장기간 유지 관리할 필요가 없는 데이터(예: 일시적 데이터)를 저장하는 데 특히 유용합니다.

이 항목의 내용:

임시 테이블

Snowflake는 비영구적 임시 데이터(예: ETL 데이터, 세션별 데이터)를 저장하기 위한 일시적 테이블 생성을 지원합니다. 임시 테이블은 생성된 세션 내에서만 존재하며 나머지 세션 동안만 유지됩니다. 따라서 다른 사용자나 세션에는 표시되지 않습니다. 세션이 종료되면 테이블에 저장된 데이터가 시스템에서 완전히 제거되므로 테이블을 생성한 사용자 또는 Snowflake가 복구할 수 없습니다.

참고

Snowflake는 테이블 외에도 임시(예: 스테이지)로 다른 특정 데이터베이스 오브젝트 생성을 지원합니다. 이러한 오브젝트는 동일한 의미를 따릅니다(즉, 세션 기반이며 나머지 세션 동안만 지속됨).

임시 테이블용 데이터 저장소 사용

임시 테이블이 유지되는 동안 테이블에 저장되는 데이터는 Snowflake는 계정에 청구하는 전체 저장소 요금에 기여합니다. 예기치 않은 저장소 변경을 방지하기 위해, 특히 24시간 이상 유지하는 세션에서 큰 임시 테이블을 생성하는 경우 Snowflake는 이러한 테이블이 더 이상 필요하지 않으면 명시적으로 삭제할 것을 권장합니다. 추가 요금이 발생하지 않도록 테이블이 생성된 세션을 명시적으로 종료할 수도 있습니다.

자세한 내용은 이 항목의 테이블 타입 비교 섹션을 참조하십시오.

다른 테이블 타입과의 이름 충돌 가능성

다른 테이블 타입(일시적 및 영구적)과 유사하게 임시 테이블은 지정된 데이터베이스 및 스키마에 속하지만, 세션 기반이기 때문에 동일한 고유성 요구 사항이 적용되지 않습니다. 즉, 동일한 스키마 내에서 동일한 이름으로 임시 및 비임시 테이블을 생성할 수 있습니다.

그러나 임시 테이블은 세션에서 동일한 스키마의 동일한 이름을 가진 다른 테이블보다 우선합니다. 이로 인해 특히 임시 및 비임시 테이블 모두에서 DDL을 수행할 때 잠재적인 충돌 및 예기치 않은 동작이 발생할 수 있습니다. 예:

  • 동일한 스키마의 기존 테이블과 이름이 같은 임시 테이블을 생성하여 기존 테이블을 효과적으로 숨길 수 있습니다.

  • 동일한 스키마의 기존 임시 테이블과 이름이 동일한 테이블을 생성할 수 있지만, 새로 생성된 테이블은 임시 테이블에 의해 숨겨집니다.

이후 테이블의 세션에서 수행되는 모든 쿼리 및 기타 작업은 임시 테이블에만 영향을 줍니다.

중요

이러한 동작은 세션에서 테이블을 삭제한 다음 Time Travel을 사용하여 테이블을 복원할 때 특히 중요합니다. CREATE OR REPLACE를 사용하여 테이블을 생성할 때 이 동작에 주목하는 것도 중요합니다. 이는 본질적으로 테이블(존재하는 경우)을 삭제하고 지정된 정의로 새 테이블을 생성하기 때문입니다.

임시 테이블 만들기

임시 테이블을 생성하려면 CREATE TABLE 에 TEMPORARY 키워드(또는 TEMP 약어)를 지정하기만 하면 됩니다.

임시 테이블을 만들 때는 오브젝트가 만들어진 스키마에 대한 CREATE TABLE 권한이 필요하지 않습니다.

예:

CREATE TEMPORARY TABLE mytemptable (id NUMBER, creation_date DATE);

참고

생성된 후에 임시 테이블을 다른 테이블 타입으로 변환할 수 없습니다.

일시적 테이블

Snowflake는 명시적으로 삭제될 때까지 지속되고 적절한 권한이 있는 모든 사용자가 사용할 수 있는 임시 테이블 생성을 지원합니다. 일시적 테이블은 Fail-safe 기간이 없다는 주요 차이점이 있는 영구 테이블과 유사합니다. 결과적으로 임시 테이블은 임시 테이블과 달리 각 세션 이후에 유지 관리해야 하는 임시 데이터용으로 특별히 설계되었지만 영구 테이블에서 제공하는 것과 동일한 수준의 데이터 보호 및 복구가 필요하지 않습니다.

일시적 테이블에 대한 데이터 저장소 사용

영구 테이블과 마찬가지로 임시 테이블은 Snowflake가 계정에 청구하는 전체 저장소 요금에 기여하지만, 일시적 테이블은 Fail-safe를 사용하지 않기 때문에 Fail-safe 비용(즉, Fail-safe 재해 복구에 필요한 데이터 유지 관리 관련 비용)이 없습니다.

자세한 내용은 이 항목의 테이블 타입 비교 섹션을 참조하십시오.

일시적 데이터베이스 및 스키마

Snowflake는 일시적 데이터베이스 및 스키마를 생성하는 기능도 지원합니다. 임시 스키마에서 생성된 모든 테이블과 일시적 데이터베이스에서 생성된 모든 스키마는 정의에 따라 임시적입니다.

일시적 테이블, 스키마 또는 데이터 만들기

일시적 테이블, 스키마, 데이터베이스를 생성하려면 오브젝트를 생성할 때 TRANSIENT 키워드를 지정하기만 하면 됩니다.

예를 들어, 일시적 테이블을 생성하려면:

CREATE TRANSIENT TABLE mytranstable (id NUMBER, creation_date DATE);

참고

일시적 테이블을 생성한 후에는 다른 테이블 타입으로 변환할 수 없습니다.

테이블 타입 비교

다음 테이블은 특히 Time Travel 및 Fail-safe에 미치는 영향과 관련하여 세 가지 테이블 타입 간의 차이점을 요약합니다.

타입

지속성

복제(원본 타입=> 대상 타입)

Time Travel 보존 기간 (일)

Fail-safe 기간 (일)

임시

세션의 나머지 기간

임시 => 임시 . . 임시 => 일시적

0 또는 1(기본값은 1)

0

일시적

명시적으로 삭제될 때까지

일시적 => 임시 . . 일시적 => 일시적

0 또는 1(기본값은 1)

0

영구(Standard Edition:)

명시적으로 삭제될 때까지

영구 => 임시 . . 영구 => 일시적 . . 영구 => 영구

0 또는 1(기본값은 1)

7

영구(Enterprise Edition 이상)

명시적으로 삭제될 때까지

영구 => 임시 . . 영구 => 일시적 . . 영구 => 영구

0~90(기본값 구성 가능)

7

Time Travel 참고 사항

  • 테이블에 대한 Time Travel 보존 기간은 테이블이 생성될 때 또는 그 이후 언제든지 지정할 수 있습니다. 보존 기간 내에서 모든 Time Travel 작업은 테이블의 데이터(예: 쿼리)와 테이블 자체(예: 복제 및 복원)에 대해 수행할 수 있습니다.

  • 영구 테이블에 대한 Time Travel 보존 기간을 0으로 설정하면 삭제 시 즉시 Fail-safe 기간으로 전환됩니다.

  • 임시 테이블의 Time Travel 보존 기간은 1일입니다. 그러나 임시 테이블은 세션(테이블이 생성된)이 종료되면 제거되므로 실제 보존 기간은 24시간 또는 나머지 세션 중 더 짧은 기간입니다.

  • 장기 실행 Time Travel 쿼리는 쿼리가 완료될 때까지 임시 및 일시적 테이블의 제거가 지연합니다.

Fail-safe 참고 사항

  • Fail-safe 기간은 모든 테이블 타입에 대해 구성할 수 없습니다.

  • 일시적 및 임시 테이블에는 Fail-safe 기간이 없습니다. 그 결과 Time Travel 보존 기간을 초과하여 추가 데이터 저장소 비용이 발생하지 않습니다.

중요

임시 테이블에는 Fail-safe 기간이 없기 때문에 임시 데이터를 저장하는 데 사용되는 매우 큰 테이블의 비용을 관리하는 데 좋은 옵션을 제공합니다. 그러나 이 표의 데이터는 Time Travel 보존 기간이 지나면 복구할 수 없습니다.

예를 들어 일시적 테이블이 삭제되거나 손실되는 시스템 오류가 발생한 후 1일이 지나면 사용자 또는 Snowflake에서 데이터를 복구할 수 없습니다. 따라서 장애로부터 보호할 필요가 없는 데이터 또는 Snowflake 외부에서 재구성할 수 있는 데이터에 대해서는 일시적 테이블만 사용하는 것이 좋습니다.

자세한 내용은 데이터 저장소 고려 사항 섹션을 참조하십시오.

맨 위로 이동