PostgreSQL 운영 환경에서 데이터 종류별로 디스크를 분리하거나, I/O 성능을 최적화하기 위해 테이블스페이스(TableSpace) 를 사용하는 경우가 많습니다. 특히 데이터 규모가 커질수록 테이블스페이스 분리는 성능과 운영 안정성 모두에 큰 도움이 됩니다.
이번 글에서는 PostgreSQL 16 기준으로 다음과 같은 네 가지 테이블스페이스를 생성하는 과정을 정리합니다.
- ts_data_eh
- ts_data_lf
- ts_data_ds
- ts_data_st
테이블스페이스는 반드시 PostgreSQL 데이터 디렉토리(data_directory) 바깥에 위치해야 한다는 점에 유의해야 합니다.
1. 테이블스페이스용 디렉토리 생성
테이블스페이스는 PostgreSQL이 직접 관리하는 데이터 디렉토리 내부가 아닌, 외부 경로에 만들어야 합니다.
여기서는 /var/lib/pgsql/tablespaces/ 아래에 디렉토리를 생성하는 예시를 사용합니다.
각 디렉토리는 테이블스페이스가 실제로 데이터 파일을 저장하는 위치가 됩니다.
2. 권한 설정 (postgres 사용자 전용)
테이블스페이스는 PostgreSQL 서버 프로세스가 접근해야 하므로, 해당 디렉토리의 소유자는 반드시 postgres 계정이어야 합니다.
또한 보안을 위해 권한은 700으로 설정합니다.
3. PostgreSQL에서 테이블스페이스 생성
이제 PostgreSQL 내부에서 테이블스페이스를 생성합니다.
각 테이블스페이스는 위에서 만든 디렉토리를 지정하여 생성합니다.
정상 생성되면 PostgreSQL 내부의 pg_tblspc 디렉토리에 자동으로 심볼릭 링크가 생성되며, 외부 디렉토리와 연결됩니다.
4. 테이블스페이스 생성 결과 확인
PostgreSQL 16에서는 테이블스페이스 경로를 확인할 때 pg_tablespace_location() 함수를 사용해야 합니다.
이 쿼리를 실행하면 각 테이블스페이스가 실제로 어떤 경로에 매핑되어 있는지 확인할 수 있습니다.
마무리
테이블스페이스는 데이터베이스 운영에서 디스크 부하를 분산시키고, 데이터 유형별 관리 전략을 적용할 때 매우 유용한 기능입니다.
특히 대용량 데이터 처리 시스템이나 ETL 기반 분석 환경에서는 테이블스페이스 설계가 성능 및 유지보수 효율성에 큰 차이를 만들어냅니다.
다음 글에서는 테이블스페이스를 활용한 스키마 구성 전략, 디스크 분리 방식, 성능 튜닝 팁 등을 추가로 다뤄보겠습니다.
'IT > 빅데이타' 카테고리의 다른 글
| RBAC 모델 정리 (0) | 2025.12.11 |
|---|---|
| [Pandas] iterrows()를 to_dict('records')로 바꾸면 어떤 점이 좋아질까? (0) | 2025.11.18 |
| Oracle 데이터타입을 PostgreSQL로 자동 변환하는 방법 (Python + Pandas) (0) | 2025.09.29 |
| PGvector 설치하기 (0) | 2025.09.22 |
| Market Intelligence: E-Commerce (0) | 2024.04.05 |