[PostgreSQL] tablespace 란? 생성법과 개념 정리
tablespace 란
데이터베이스 객체가 파일 시스템상에서 저장되는 물리적인 공간을 의미한다.
논리적인 데이터베이스 구조나 스키마를 지정하지 않는다.
PostgreSQL에서 DB는 PGDATA라는 환경변수에 지정된 디렉터리를 통째로 DB로 사용한다.
그리고 그 하위에 테이블이 파일로 생성된다.
즉 테이블스페이스를 따로 생성하지 않아도 DB에 사용자 테이블을 만들 수 있다.
기본적으로 DB로 지정된 디렉토리 전체가 하나의 기본 테이블스페이스로 인식되는 것이다.
PostgreSQL 공식문서는 아래와 같이 정의하고 있다.https://www.postgresql.kr/docs/9.6/manage-ag-tablespaces.html
- postgresql에서 기본으로 테이블스페이스가 생성되는 여부
* 기본적으로 pg_default, pg_global 이 생성됩니다.
List of tablespaces
Name | Owner | Location
------------+----------+-------------------------
pg_default | postgres |
pg_global | postgres |
* pg_default 의 경우 기본 default 경로로써 따로 T/S 를 지정하지 않을 경우 해당 T/S를 사용
* pg_global 의 경우 postgresql 공유 시스템 카탈로그에 사용되는 공간
테이블 스페이스는 다음과 같은 DDL 문으로 생성할 수 있으며 해당 테이블스페이스에 태이블을 생성할 수 있다.
- 테이블스페이스가 생성된다면, 용량을 산정하는 방법
* postgresql 은 T/S 생성 시 미리 용량을 산정하는 방식이 아닌 생성한 하나의 디렉토리에 데이터를 적재하는 방식입니다.
- 만약 테이블 스페이스를 조회할 수 없다면, 시스템에서 DB에 할당되는 용량 조회 방법 문의
- \db+ 명령어를 통한 조회
postgres=# \db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Size | Description
------------+----------+-------------------------+-------------------+---------+--------+-------------
pg_default | postgres| | | | 214 MB |
pg_global | postgres| | | | 608 kB |
2. 디렉토리를 통한 조회
[postgres@localhost pg_tblspc]$ pwd
/postgres/data/pg_tblspc
[postgres@localhost pg_tblspc]$ ll
total 0
lrwxrwxrwx. 1 postgres postgres 23 Mar 3 08:58 41174 -> /ssd/mydb2/data