PostgreSQL Tablespace 생성
Tablespace
데이터베이스에서 Tablespace는 오라클과 PostgreSQL에서만 존재하는 개념입니다.
테이블스페이스가 존재 함으로 각 schema의 오브젝트 관리가 용이해지며, 데이터파일 관리 및 용량 관리에 있어서, 또는 성능 관리에 있어서 효과적인 관리가 가능해 집니다.
테이블 스페이스 확인
postgres=# select * from pg_tablespace; spcname | spcowner | spcacl | spcoptions ------------+----------+--------+------------ pg_default | 10 | | pg_global | 10 | | (2 rows)
postgres=# \db List of tablespaces Name | Owner | Location ------------+----------+---------- pg_default | postgres | pg_global | postgres | (2 rows)
postgres=# \db+ List of tablespaces Name | Owner | Location | Access privileges | Options | Size | Description ------------+----------+----------+-------------------+---------+--------+------------- pg_default | postgres | | | | 29 MB | pg_global | postgres | | | | 497 kB | (2 rows)
특별히 유저나 스키마에 테이블 스페이스를 지정하지 않고 pg_default 테이블스페이스를 이용 할 수 있습니다.
해당 디렉토리는 postgres의 권한을 가지고 있어야 합니다.
테이블스페이스 생성
Synopsis :
CREATE TABLESPACE tablespace_name
[ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]
LOCATION ’directory’
[ WITH ( tablespace_option = value [, … ] ) ]
생성 예제
postgres@pgsqldb:~]$ psql -d postgres -U postgres psql (9.6.11) Type "help" for help. postgres=# CREATE TABLESPACE mydb01 LOCATION '/postgresql/tbs'; CREATE TABLESPACE postgres=#
Tablespace 조회
postgres=# \db List of tablespaces Name | Owner | Location ------------+----------+----------------- mydb01 | postgres | /postgresql/tbs pg_default | postgres | pg_global | postgres | (3 rows)
postgres=# select * from pg_tablespace; spcname | spcowner | spcacl | spcoptions ------------+----------+--------+------------ pg_default | 10 | | pg_global | 10 | | mydb01 | 10 | | (3 rows)
postgres=# \q postgres@pgsqldb:~]$ ls -l /postgresql/tbs/ total 0 drwx------ 2 postgres postgres 6 Dec 27 14:03 PG_9.6_201608131 postgres@pgsqldb:~]ls−l PGDATA/pg_tblspc total 0 lrwxrwxrwx 1 postgres postgres 15 Dec 27 14:03 16392 -> /postgresql/tbs postgres@pgsqldb:~]$
tablespace owner를 지정해서 생성 할 수도 있습니다.
경로를 지정하여 테이블스페이스를 생성하면, $PGDATA/pg_tblspc 밑에 OID로 심볼릭 링크가 생성됩니다.
실제 파일은 경로에 있고, 클러스터 홈 밑에 pg_tblspc에 링크가 생성되어 DB에 정보를 전달하는것 입니다.
Tablesapce 이름 변경
postgres=# ALTER TABLESPACE mydb RENAME TO mydb01;
Tablespace Owner 변경
postgres=# ALTER TABLESPACE mydb01 OWNER TO POSTGRES;
최신 댓글