CREATE TABLESPACE

CREATE TABLESPACE — 새 테이블스페이스 정의

요약

CREATE TABLESPACE 테이블스페이스이름
    [ OWNER { 새소유주 | CURRENT_USER | SESSION_USER } ]
    LOCATION '디렉터리'
    [ WITH ( 테이블스페이스옵션 =  [, ... ] ) ]

설명

CREATE TABLESPACE 명령은 데이베이스 전역 테이블스페이스를 만든다. 해당 테이블스페이스 이름은 데이터베이스 클러스터 내에 유일해야 한다.

테이블스페이스란 OS 파일 시스템과 연결해서, 데이터 파일(테이블이나 인덱스)을 기본 데이터 디렉터리가 아닌 다른 디렉터리에 보관될 수 있도록 한다.

테이블스페이스이름으로 지정한 테이블스페이스를 CREATE DATABASE, CREATE TABLE, CREATE INDEX 또는 ADD CONSTRAINT 명령에서 테이블스페이스를 지정한다면, 그 위치에 자료를 쓸 수 있도록 적당한 권한이 명령을 실행하는 사용자에게 부여되어 있어야 한다.

주의

테이블스페이스는 해당 클러스터와 분리해서 독립적으로 사용될 수 없다. 22.6절 참고.

매개 변수

테이블스페이스이름

만들 새 테이블스페이스 이름. 이 이름은 pg_로 시작할 수 없다. 이 이름은 시스템 내부 테이블스페이스로 사용된다.

새소유주

해당 테이블스페이스의 소유주가 될 사용자 이름. 생략하면 이 명령을 실행하는 사용자가 소유주가 된다. 테이블스페이스는 슈퍼유저만 만들 수 있으나, 만들 때 일반 사용자를 소유주로 지정할 수는 있다.

디렉터리

해당 테이블스페이스와 연결 될 디렉터리 경로 이름. 이 디렉터리 안에는 아무 것도 없어야 하며, 그 디렉터리의 OS 소유주는 PostgreSQL 서버를 실행하는 OS 사용자와 같아야 한다. 경로 이름은 절대경로 여야 한다. CREATE TABLESPACE 명령으로 이 디렉터리가 자동으로 만들어지지는 않는다. 직접 미리 만들어야 한다.

테이블스페이스옵션

해당 테이블스페이스에 대한 옵션을 지정. 현재 지원하는 옵션은 seq_page_cost, random_page_cost, effective_io_concurrency, maintenance_io_concurrency 이다. 이 설정들은 실행 계획기가 페이지 읽기 비용을 예상할 때 그 개체가 이 테이블스페이스가 있다면 여기서 지정한 값을 사용해서 비용을 계산하도록 한다. (각 seq_page_cost, random_page_cost, effective_io_concurrency, maintenance_io_concurrency 환경 설정 변수 참조). 각 개별 테이블스페이스 별로 지정한 설정은 전역 설정보다 우선 순위가 높다. 이 옵션들은 해당 디렉터리가 기본 디렉터리와 다른 I/O 성능으로 운영 될 때 유용하게 사용된다.

참고

테이블스페이스는 심볼릭 링크를 지원하는 OS에서만 사용할 수 있다.

CREATE TABLESPACE 명령은 트랜잭션 블럭 안에서는 사용할 수 없다.

예제

/data/dbs 디렉터리를 dbspace 테이블스페이스로 사용한다면, 먼저 디렉터리를 만들고, 소유주를 바꾼다:

mkdir /data/dbs
chown postgres:postgres /data/dbs

다음 PostgreSQL 서버 안에서 아래 명령을 실행한다:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';

테이블스페이스 소유주를 다르게 지정할 때는:

CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';

호환성

CREATE TABLESPACE 구문은 PostgreSQL 확장형이다.

관련 항목

CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE, ALTER TABLESPACE