CREATE SCHEMA
현재 데이터베이스에 대한 새 스키마를 정의합니다.
필수 권한
CREATE SCHEMA에 필요한 권한은 다음과 같습니다.
수퍼유저
CREATE SCHEMA 권한이 있는 사용자
구문
CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION username ] [ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] CREATE SCHEMA AUTHORIZATION username[ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] ]
파라미터
- IF NOT EXISTS
-
지정된 스키마가 이미 존재하는 경우 오류 메시지와 함께 종료하는 대신, 명령이 아무 것도 변경하지 않고 스키마가 존재한다는 메시지를 반환함을 나타내는 절입니다.
이 절은 스크립트 작성 시 유용하므로, CREATE SCHEMA가 이미 존재하는 스키마의 생성을 시도하는 경우에는 스크립트가 실패하지 않습니다.
- schema_name
-
새 스키마의 이름입니다. 스키마 이름은
PUBLIC
일 수 없습니다. 유효한 이름에 대한 자세한 내용은 이름 및 식별자 섹션을 참조하세요.참고
똑같은 이름의 객체가 스키마 이름 없이 참조될 때 이런 객체의 우선 순위는 search_path 구성 파라미터에 있는 스키마의 목록에 따라 결정됩니다.
- AUTHORIZATION
-
지정된 사용자에게 소유권을 부여하는 절입니다.
- 사용자 이름
-
스키마 소유자의 이름입니다.
- schema_element
-
스키마 내에서 생성할 하나 이상의 객체에 대한 정의입니다.
- QUOTA
-
지정된 스키마에서 사용할 수 있는 최대 디스크 공간 양입니다. 이 공간은 총제적 디스크 사용량입니다. 여기에는 모든 영구 테이블, 지정된 스키마 아래의 구체화된 보기 및 각 컴퓨팅 노드에서 ALL 배포가 있는 모든 테이블의 중복 복사본이 포함됩니다. 임시 네임스페이스 또는 스키마의 일부로 생성된 임시 테이블은 스키마 할당량에서 고려되지 않습니다.
구성된 스키마 할당량을 보려면 SVV_SCHEMA_QUOTA_STATE 섹션을 참조하세요.
스키마 할당량이 초과된 레코드를 보려면 STL_SCHEMA_QUOTA_VIOLATIONS 섹션을 참조하세요.
Amazon Redshift는 선택한 값을 메가바이트로 변환합니다. 값을 지정하지 않으면 기가바이트가 기본 측정 단위입니다.
스키마 할당량을 설정하고 변경하려면 데이터베이스 수퍼유저여야 합니다. 수퍼유저는 아니어도 CREATE SCHEMA 권한이 있는 사용자는 정의된 할당량으로 스키마를 생성할 수 있습니다. 할당량을 정의하지 않고 스키마를 생성하면 스키마는 무제한 할당량을 가집니다. 스키마에서 사용하는 현재 값 이하로 할당량을 설정하면 Amazon Redshift에서는 디스크 공간을 확보할 때까지 추가 수집을 허용하지 않습니다. DELETE 문은 테이블에서 데이터를 삭제하고 VACUUM이 실행될 때만 디스크 공간이 확보됩니다.
Amazon Redshift는 트랜잭션을 커밋하기 전에 각 트랜잭션에 할당량 위반이 있는지 확인합니다. Amazon Redshift는 설정된 할당량에 대해 수정된 각 스키마의 크기(스키마의 모든 테이블이 사용하는 디스크 공간)를 확인합니다. 트랜잭션이 끝날 때 할당량 위반 검사가 발생하기 때문에 크기 제한은 커밋되기 전에 트랜잭션 내에서 일시적으로 할당량을 초과할 수 있습니다. 트랜잭션이 할당량을 초과하면 Amazon Redshift는 트랜잭션을 중단하고 후속 수집 작업을 금지하며 디스크 공간을 확보할 때까지 모든 변경 사항을 되돌립니다. 백그라운드 VACUUM 및 내부 정리로 인해 취소된 트랜잭션 후 스키마를 검사할 때까지 스키마가 가득 차지 않을 수 있습니다.
예외적으로 Amazon Redshift는 할당량 위반을 무시하고 특정 경우에 트랜잭션을 커밋합니다. Amazon Redshift는 동일한 트랜잭션에 INSERT 또는 COPY 수집 문이 없는 다음 문 중 하나 이상으로만 구성된 트랜잭션에 대해 이 작업을 수행합니다.
-
DELETE
-
TRUNCATE
-
VACUUM
-
DROP TABLE
-
전체 스키마에서 다른 비전체 스키마로 데이터를 이동할 때만 ALTER TABLE APPEND
-
- UNLIMITED
-
Amazon Redshift는 스키마의 총 크기 증가에 제한을 두지 않습니다.
Limits
Amazon Redshift에서는 스키마에 대해 다음과 같은 제한 사항을 둡니다.
-
데이터베이스당 스키마 수는 최대 9,900개입니다.
예시
다음 예제에서는 US_SALES로 명명된 스키마를 생성하고 사용자 DWUSER에게 소유권을 부여합니다.
create schema us_sales authorization dwuser;
다음 예제에서는 US_SALES로 명명된 스키마를 생성하고 사용자 DWUSER에게 소유권을 부여하며 할당량을 50GB로 설정합니다.
create schema us_sales authorization dwuser QUOTA 50 GB;
새로운 스키마를 보려면 다음과 같이 PG_NAMESPACE 카탈로그 테이블을 쿼리하십시오.
select nspname as schema, usename as owner from pg_namespace, pg_user where pg_namespace.nspowner = pg_user.usesysid and pg_user.usename ='dwuser'; schema | owner ----------+---------- us_sales | dwuser (1 row)
다음 예제에서는 US_SALES 스키마를 생성하거나 이 스키마가 이미 존재하는 경우에는 아무 것도 하지 않고 메시지를 반환합니다.
create schema if not exists us_sales;