2025. 2. 21. 13:45ㆍ개발 문서/PostgreSQL
PostgreSQL TableSpace 설정하기
PostgreSQL에서 대량의 데이터를 관리할 때, 성능 최적화 및 저장소 관리의 효율성을 높이기 위해 TableSpace(테이블스페이스) 를 활용할 수 있습니다. 테이블스페이스를 이용하면 특정 데이터 파일을 원하는 저장소에 배치할 수 있으며, 데이터 액세스 패턴에 따라 핫 데이터와 콜드 데이터를 분리하여 저장할 수 있습니다.
1. TableSpace란?
TableSpace는 PostgreSQL에서 데이터를 저장하는 논리적인 저장소 단위입니다. 기본적으로 모든 데이터는 pg_default라는 기본 테이블스페이스에 저장됩니다. 하지만 사용자 지정 테이블스페이스를 생성하면 특정 디스크 위치에 테이블, 인덱스를 저장할 수 있습니다.
2. TableSpace 생성하기
사용자 지정 테이블스페이스를 생성하려면, 먼저 해당 디렉토리를 준비하고, PostgreSQL이 해당 경로에 접근할 수 있도록 권한을 설정해야 합니다.
(1) 디렉토리 생성
먼저, 테이블스페이스를 저장할 물리적 디렉토리를 생성합니다.
mkdir -p /path/to/cold/storage
chown postgres:postgres /path/to/cold/storage
chmod 700 /path/to/cold/storage
위 명령어를 실행하면 PostgreSQL이 접근할 수 있는 디렉토리가 생성됩니다.
(2) TableSpace 생성
아래 SQL을 실행하여 새로운 테이블스페이스를 생성합니다.
CREATE TABLESPACE cold_data_space LOCATION '/path/to/cold/storage';
이제 cold_data_space라는 이름의 테이블스페이스가 생성되었으며, 데이터는 /path/to/cold/storage에 저장됩니다.
3. 테이블을 특정 TableSpace에 배치하기
생성된 테이블스페이스를 특정 테이블에 적용하려면 테이블을 생성할 때 테이블스페이스를 지정하거나, 기존 테이블을 이동할 수 있습니다.
(1) 새로운 테이블을 특정 테이블스페이스에 생성
CREATE TABLE my_table (
id SERIAL PRIMARY KEY,
data TEXT
) TABLESPACE cold_data_space;
이렇게 하면 my_table의 데이터가 cold_data_space에 저장됩니다.
(2) 기존 테이블을 다른 TableSpace로 이동
ALTER TABLE partitioned_table_partition SET TABLESPACE cold_data_space;
이 명령어를 실행하면 partitioned_table_partition 테이블이 cold_data_space로 이동됩니다.
4. TableSpace 정보 확인하기
(1) 생성된 TableSpace 목록 확인
SELECT spcname, pg_tablespace_location(oid) FROM pg_tablespace;
이 명령을 실행하면 현재 등록된 모든 테이블스페이스와 해당 위치를 확인할 수 있습니다.
(2) 특정 테이블이 어떤 TableSpace에 속해 있는지 확인
SELECT tablename, tablespace
FROM pg_tables
WHERE schemaname = 'public';
이 명령을 실행하면 public 스키마 내의 모든 테이블과 해당 테이블스페이스 정보를 확인할 수 있습니다. 만약 tablespace 컬럼이 NULL이라면 기본 테이블스페이스(pg_default)를 사용하고 있는 것입니다.
5. TableSpace 삭제하기
사용하지 않는 테이블스페이스를 삭제할 수도 있습니다. 단, 삭제하려는 테이블스페이스에 테이블이 존재하면 삭제할 수 없습니다.
DROP TABLESPACE cold_data_space;
만약 테이블이 존재한다면 먼저 테이블을 다른 테이블스페이스로 이동한 후 삭제해야 합니다.
6. TableSpace 활용 예시
TableSpace를 활용하면 데이터를 핫/콜드 스토리지로 분리하여 관리할 수 있습니다. 예를 들어:
- 핫 데이터 (Hot Data): 자주 액세스하는 데이터를 고성능 SSD에 저장 (예: pg_default)
- 콜드 데이터 (Cold Data): 잘 사용하지 않는 데이터를 저비용 스토리지 (HDD, 네트워크 스토리지 등) 에 저장 (cold_data_space)
예제 시나리오
-- 핫 데이터를 위한 기본 테이블
CREATE TABLE hot_table (
id SERIAL PRIMARY KEY,
recent_data TEXT
) TABLESPACE pg_default;
-- 콜드 데이터를 위한 테이블
CREATE TABLE cold_table (
id SERIAL PRIMARY KEY,
old_data TEXT
) TABLESPACE cold_data_space;
이렇게 하면 최근 자주 사용되는 데이터는 기본 테이블스페이스(pg_default)에, 오래된 데이터는 저비용 스토리지(cold_data_space)에 저장할 수 있습니다.
7. 결론
PostgreSQL의 TableSpace 기능을 활용하면, 데이터 저장소를 효율적으로 관리할 수 있습니다. 특히, 데이터 접근 빈도에 따라 저장소를 분리하면 성능과 비용을 최적화할 수 있습니다.
본 문서에서는 TableSpace 생성부터 테이블 적용, 정보 조회, 삭제 방법까지 상세히 정리하였습니다. 실무에서 대용량 데이터를 관리할 때 활용 가능합니다.
'개발 문서 > PostgreSQL' 카테고리의 다른 글
PostgreSQL에서 시퀀스 관리 및 활용 가이드 (0) | 2024.12.02 |
---|