인성장

[PostgreSQL] 테이블스페이스 관리(생성, 삭제 등) 본문

카테고리 없음

[PostgreSQL] 테이블스페이스 관리(생성, 삭제 등)

인성장 2023. 12. 13. 10:27
테이블스페이스 관리

 

PostgreSQL의 테이블스페이스는 데이터베이스 관리자가 데이터베이스 객체를 나타내는 파일을 저장할 수 있는 파일 시스템의 위치를 정의할 수 있게 해줍니다. 테이블스페이스를 사용함으로써 관리자는 디스크 레이아웃을 제어할 수 있고, 디스크 용량을 더욱 용이하게 관리할 수 있도록 도와줍니다.

 

테이블스페이스 생성 시 주의할 점은 테이블스페이스를 생성하기 전 테이블스페이스을 위치시킬 디렉토리 경로는 운영체제 상에서 미리 생성되어 있어야 하고, 빈 디렉토리여야 합니다. 그리고 OS상의 postgres 계정 소유여야 합니다.

 

 

테이블스페이스 생성 

CREATE TABLESPACE  [tablespace_name] OWNER [username] LOCATION '/path';

# mkdir /pgdata
# chown -R postgres:dba /pgdata
# su - postgres
$ psql
postgres=# CREATE TABLESPACE pgtbl OWNER postgres LOCATION ‘/pgdata’;

 

 

테이블스페이스 삭제 방법

DROP TABLESPACE pgdata;

* 테이블스페이스 삭제는 현재 접속한 데이터베이스가 해당 테이블스페이스를 사용하고 있거나 해당 테이블스페이스를 사용하고 있는 객체 하나라도 있으면 삭제가 되지 않습니다.

 

 

데이터베이스 Default Tablespace 변경

ALTER DATABASE  [database_name] SET DEFAULT_TABLESPACE=[new_tablespace_name];

ALTER DATABASE postgres SET DEFAULT_TABLESPACE=pgdata;

 

 

테이블스페이스 Owner 변경

ALTER TABLESPACE [tablespace_name] OWNER TO [username];

ALTER TABLESPACE pgdata OWNER TO postgres;

 

 

테이블스페이스 디렉토리 경로 확인

SELECT spcname,pg_tablespace_location(oid) FROM pg_tablespace;

* 테이블스페이스 별 OS 상 디렉토리 경로를 찾고 싶을 때 유용합니다.

 

 

특정 테이블 테이블스페이스 이동

ALTER TABLE [table_name] SET TABLESPACE [tablespace_name];

ALTER TABLE testtable SET TABLESPACE pgdata;

 

 

테이블스페이스 별 총 사용량 측정

SELECT spcname, pg_size_pretty(pg_tablespace_size(spcname)) FROM pg_tablespace;
반응형