[PostgreSQL] 테이블스페이스 관리(생성, 삭제 등)
테이블스페이스 관리
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;