파티션 분리 및 연결
ATTACH PARTITION과 DETACH PARTITION을 사용해 읽기를 차단하지 않고 파티션을 추가하거나 제거해보세요.
파티션 분리 및 연결은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
왜 분리하나요?
기존 데이터를 삭제하지 않고 운영 중인 테이블에서 오래된 파티션을 분리할 수 있습니다. 일반적인 사용 사례는 다음과 같습니다.
- 별도 데이터베이스에 보관
- 더 저렴한 저장소로 이동
- 백업한 후 삭제하는 방식
DETACH PARTITION
부모 테이블에서 파티션을 제거하지만 데이터는 유지합니다.
ALTER TABLE events DETACH PARTITION events_2022;
-- events_2022 is now a standalone table.
-- Queries on events no longer see those rows.DETACH CONCURRENTLY (PG 14+)
ACCESS EXCLUSIVE 잠금을 피합니다.
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.분리된 파티션 보관
분리한 후:
-- Backup with pg_dump:
pg_dump --table=events_2022 mydb > events_2022.sql
-- Move to a cold-storage Postgres or S3:
psql cold_db < events_2022.sql
-- Then drop from primary:
DROP TABLE events_2022;ATTACH PARTITION
기존 테이블을 새 파티션으로 추가합니다.
CREATE TABLE events_2025 (LIKE events INCLUDING ALL);
-- Load data with COPY or INSERT ... SELECT
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');ATTACH 중 검증
ATTACH는 새 파티션을 검사하여 모든 행이 FOR VALUES 범위에 포함되는지 확인합니다. ATTACH 전에 일치하는 CHECK 제약 조건을 미리 설정하면 이 검사를 피할 수 있습니다.
ALTER TABLE events_2025
ADD CONSTRAINT events_2025_ts_check
CHECK (ts >= '2025-01-01' AND ts < '2026-01-01');
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
-- No scan needed; PG trusts the CHECK.순환 시간 창
매주 또는 매월 앞으로 순환합니다. 다음 파티션을 미리 만들고 가장 오래된 파티션을 삭제합니다.
BEGIN;
CREATE TABLE events_2024_q4 PARTITION OF events FOR VALUES FROM ('2024-10-01') TO ('2025-01-01');
DROP TABLE events_2023_q4;
COMMIT;저장소 계층 전환
파티션을 분리하고, ALTER TABLE … SET TABLESPACE를 사용해 더 느린 저장소로 옮긴 다음, 다시 연결합니다.
ALTER TABLE events DETACH PARTITION events_2022;
ALTER TABLE events_2022 SET TABLESPACE archive_disk;
ALTER TABLE events ATTACH PARTITION events_2022 FOR VALUES FROM ('2022-01-01') TO ('2023-01-01');연결된 파티션의 인덱스
파티션을 연결하려면 해당 인덱스가 부모 테이블의 인덱스와 일치해야 합니다. PG 14+에서는 ATTACH 중 누락된 인덱스를 자동으로 만들 수 있습니다.
원자적 파티션 교체
DETACH와 ATTACH를 트랜잭션으로 묶으면 파티션 내용을 원자적으로 교체할 수 있습니다. 일반적인 방식은 "새 파티션을 오프라인에서 만든 다음 교체"하는 것입니다.
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;성능
DETACH와 ATTACH는 카탈로그 작업이므로 제약 조건을 미리 설정해 두면 즉시 완료됩니다. CHECK 제약 조건을 활용하는 방식은 대규모 환경에서 필수적입니다.
요약
분리와 연결은 온라인 유지 관리에서 파티셔닝의 비장의 무기입니다.
- 온라인 제거에는 DETACH PARTITION CONCURRENTLY 사용
- ATTACH 전에 CHECK 제약 조건을 설정하면 검증 검사를 건너뜀
- 교체, 보관, 저장소 계층 이동
- BEGIN/COMMIT으로 원자적 처리
빠른 확인
ATTACH PARTITION을 실행할 때 전체 테이블 검사를 피하려면 어떻게 해야 합니까?
자주 묻는 질문
“파티션 분리 및 연결” 강의는 무료인가요?
네 — “파티션 분리 및 연결” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“파티션 분리 및 연결”에서 뭘 배우나요?
ATTACH PARTITION과 DETACH PARTITION을 사용해 읽기를 차단하지 않고 파티션을 추가하거나 제거해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“파티션 분리 및 연결” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.