CREATE TABLE AS - Amazon Redshift

CREATE TABLE AS

쿼리를 기반으로 새 테이블을 만듭니다. 이 테이블의 소유자는 명령을 발행하는 사용자입니다.

명령에서 쿼리에 의해 정의된 데이터와 함께 새 테이블이 로드됩니다. 테이블 열의 이름과 데이터 형식은 쿼리의 출력 열과 연결되어 있습니다. CREATE TABLE AS(CTAS) 명령을 실행하면 새 테이블이 생성되고 새 테이블을 로드하는 쿼리가 평가됩니다.

구문

CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ ( column_name [, ... ] ) ] [ BACKUP { YES | NO } ] [ table_attributes ] AS query where table_attributes are: [ DISTSTYLE { AUTO | EVEN | ALL | KEY } ] [ DISTKEY( distkey_identifier ) ] [ [ COMPOUND | INTERLEAVED ] SORTKEY( column_name [, ...] ) ]

파라미터

LOCAL

이 선택적 키워드는 문에서 허용되지만, Amazon Redshift에는 아무런 효과도 없습니다.

TEMPORARY | TEMP

임시 테이블을 만듭니다. 임시 테이블은 자신이 생성된 세션이 끝날 때 자동으로 삭제됩니다.

table_name

생성할 테이블의 이름입니다.

중요

'#'으로 시작하는 테이블 이름을 지정하면 테이블이 임시 테이블로 생성됩니다. 예:

create table #newtable (id) as select * from oldtable;

최대 테이블 이름 길이는 127바이트이며, 이보다 긴 이름은 127바이트까지 표시되고 나머지는 잘립니다. Amazon Redshift는 노드 유형별로 클러스터당 테이블 수 할당량을 적용합니다. 다음 테이블에서 보듯이, 데이터베이스 및 스키마 이름으로 테이블 이름을 정규화할 수 있습니다.

create table tickit.public.test (c1) as select * from oldtable;

이 예에서는 tickit이 데이터베이스 이름이고, public이 스키마 이름입니다. 데이터베이스 또는 스키마가 존재하지 않는 경우 테이블이 생성되지 않으며, 이 명령문은 오류를 반환합니다.

스키마 이름이 주어지는 경우 새 테이블은 그 스키마에서 생성됩니다(생성자가 해당 스키마에 액세스할 수 있다고 가정). 테이블 이름은 그 스키마에 대한 고유한 이름이어야 합니다. 아무런 스키마도 지정되지 않으면 현재 데이터베이스 스키마를 사용하여 테이블이 생성됩니다. 임시 테이블을 생성할 경우, 임시 테이블이 특수한 스키마에 존재하므로 스키마 이름을 지정할 수 없습니다.

같은 이름을 가진 여러 임시 테이블이 각각 별도의 세션에서 생성되는 경우에는 같은 데이터베이스에 동시에 존재하도록 허용됩니다. 이러한 테이블은 서로 다른 스키마에 할당됩니다.

column_name

새 테이블에 있는 열의 이름입니다. 열 이름을 입력하지 않은 경우에는 쿼리의 출력 열 이름에서 열 이름을 따옵니다. 기본 열 이름은 표현식에 사용됩니다. 유효한 이름에 대한 자세한 내용은 이름 및 식별자 섹션을 참조하세요.

BACKUP { YES | NO }

자동 및 수동 클러스터 스냅샷에 테이블을 포함해야 할지 여부를 지정하는 절입니다. 중요한 데이터를 포함하지 않는 스테이징 테이블과 같은 테이블의 경우 BACKUP NO를 지정하여 스냅샷을 생성하고 스냅샷으로부터 복원할 때의 처리 시간을 절약하고 Amazon Simple Storage Service의 스토리지 공간을 줄입니다. BACKUP NO 설정은 클러스터 내에 있는 다른 노드로의 데이터 자동 복제에 아무런 영향도 미치지 않으므로, 노드 장애가 발생할 경우 BACKUP NO가 지정된 테이블이 복원됩니다. 기본값은 BACKUP YES입니다.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

전체 테이블의 데이터 배포 스타일을 정의합니다. Amazon Redshift는 테이블에 대해 지정된 배포 스타일에 따라 컴퓨팅 노드에 테이블의 행을 배포합니다. 기본값은 DISTSTYLE AUTO입니다.

테이블에 대해 선택하는 분산 스타일이 데이터베이스의 전체 성능에 영향을 미칩니다. 자세한 내용은 데이터 배포 스타일 작업 단원을 참조하십시오.

  • AUTO: Amazon Redshift에서 테이블 데이터를 기반으로 최적의 배포 스타일을 할당합니다. 테이블에 적용된 분산 스타일을 보려면 PG_CLASS 시스템 카탈로그 테이블을 쿼리합니다. 자세한 내용은 분산 스타일 보기 단원을 참조하십시오.

  • EVEN: 테이블의 데이터가 클러스터의 노드들에 걸쳐 라운드 로빈 배포 방식으로 균등하게 분포됩니다. 행 ID는 배포의 결정에 사용되며, 대략적으로 같은 수의 행이 각 노드로 배포됩니다. 이것이 기본 배포 방법입니다.

  • KEY: 데이터가 DISTKEY 열에 있는 값을 기준으로 배포됩니다. 조인 테이블의 조인 열을 배포 키로 설정하면 두 테이블 모두의 조인 행이 컴퓨팅 노드에 배치됩니다. 데이터가 배치되면 최적화 프로그램이 조인을 더 효율적으로 수행할 수 있습니다. DISTSTYLE KEY를 지정하는 경우 DISTKEY 열의 이름을 지정해야 합니다.

  • ALL: 전체 테이블의 복사본이 모든 노드로 배포됩니다. 이 분산 스타일은 임의의 조인에 필요한 모든 행을 모든 노드에서 사용할 수 있도록 보장하지만, 스토리지 요구량이 몇 배로 늘고 테이블의 로드 시간과 유지 관리 시간도 증가합니다. ALL 배포는 KEY 배포가 적절하지 않은 특정 차원 테이블과 함께 사용할 때 실행 시간을 개선할 수 있지만, 성능 개선 정도를 유지 관리 비용과 비교 검토해야 합니다.

DISTKEY (column)

배포 키에 대해 열 이름이나 위치 번호를 지정합니다. 테이블에 대한 선택적 열 목록 또는 쿼리의 선택 목록 중 하나에 지정된 이름을 사용합니다. 또는 첫 번째로 선택한 열이 1, 두 번째로 선택한 열이 2 등과 같이 이어지는 경우에는 위치 번호를 사용합니다. 테이블에서는 한 개의 열만 배포 키일 수 있습니다.

  • 어떤 열을 DISTKEY 열로 선언하는 경우 DISTSTYLE이 KEY로 설정되거나 전혀 설정되지 않아야 합니다.

  • 열을 DISTKEY 열로 선언하지 않은 경우 DISTSTYLE을 EVEN으로 설정할 수 있습니다.

  • DISTKEY 또는 DISTSTYLE을 지정하지 않으면 CTAS가 SELECT 절의 쿼리 계획을 기반으로 새 테이블의 분산 스타일을 결정합니다. 자세한 내용은 열 및 테이블 속성의 상속 단원을 참조하십시오.

배포 키 및 정렬 키와 동일한 열을 정의할 수 있습니다. 이 접근 방식은 문제가 되는 열이 쿼리에서 조인 열일 때 조인을 가속화하는 경향이 있습니다.

[ COMPOUND | INTERLEAVED ] SORTKEY ( column_name [, ... ] )

테이블에 대해 하나 이상의 정렬 키를 지정합니다. 데이터가 테이블로 로드될 때 데이터는 정렬 키로 지정되는 열을 기준으로 정렬됩니다.

COMPOUND 또는 INTERLEAVED 정렬 스타일을 선택적으로 지정할 수 있습니다. 기본 키워드는 COMPOUND입니다. 자세한 내용은 정렬 키 작업 단원을 참조하십시오.

테이블당 최대 400개의 COMPOUND SORTKEY 열 또는 8개의 INTERLEAVED SORTKEY 열을 정의할 수 있습니다.

SORTKEY를 지정하지 않으면 CTAS가 SELECT 절의 쿼리 계획을 기반으로 새 테이블의 정렬 키를 결정합니다. 자세한 내용은 열 및 테이블 속성의 상속 단원을 참조하십시오.

COMPOUND

목록에 표시되는 모든 열로 구성된 복합 키를 사용하여 데이터가 나열되는 순서대로 정렬됨을 지정합니다. 복합 정렬 키는 쿼리가 정렬 열의 순서에 따라 행을 스캔할 때 가장 유용합니다. 쿼리가 보조 정렬 열에 의존할 때는 복합 키로 정렬함으로써 얻는 성능상의 이점이 감소합니다. 테이블당 최대 400개의 COMPOUND SORTKEY 열을 정의할 수 있습니다.

INTERLEAVED

데이터가 인터리브 정렬 키를 사용하여 정렬됨을 지정합니다. 인터리브 정렬 키에 대해 최대 8개의 열을 지정할 수 있습니다.

인터리브 정렬에서는 정렬 키에서 각 열이나 열의 하위 집합에 똑같은 가중치를 부여하므로, 쿼리가 정렬 키에 있는 열의 순서에 종속되지 않습니다. 쿼리가 하나 이상의 보조 정렬 열을 사용하는 경우 인터리브 정렬은 쿼리 성능을 크게 높여줍니다. 인터리브 정렬에는 데이터 로드와 vacuum 작업에 약간의 오버헤드 비용이 수반됩니다.

AS query

Amazon Redshift가 지원하는 쿼리(SELECT 문)입니다.