ATTACH/DETACH PARTITION — 파티션째로 뽑아내고 다시 끼워 넣는다
ClickHouse ReplacingMergeTree is_deleted 컬럼 및 ATTACH/DETACH PARTITION 공식 문서 종합 (웹 리서치, 2026) — ClickHouse 공식 문서(guides/replacing-merge-tree, reference/statements/alter/partition) + Altinity 기술 블로그 ClickHouse 공식문서 ALTER TABLE ... PARTITION
이 모듈을 다 읽으면
- DETACH PARTITION이 데이터를 지우는 게 아니라 detached 디렉터리로 옮겨 '서버가 잊어버리게' 만드는 것임을 설명할 수 있다
- 이 두 명령이 clickhouse-learn-03의 PARTITION BY 설계와 어떻게 실무적으로 맞물리는지 설명할 수 있다
clickhouse-learn-03에서 다룬 PARTITION BY(파티션 단위로 데이터를 나누는 설계)를 전제로, 그 파티션 하나를 통째로 테이블에서 떼어내거나(DETACH) 다시 붙이는(ATTACH) 파티션 단위 운영 도구를 정리한다.
DETACH PARTITION — 삭제가 아니라 detached 디렉터리로 이동
DETACH PARTITION은 지정한 파티션의 모든 데이터를 detached 디렉터리로 옮기고, 서버는 그 데이터가 마치 존재하지 않는 것처럼 잊어버린다 — 실제로 삭제하는 게 아니라 활성 상태에서 빼놓는 것이다. 실행 후에는 그 detached 디렉터리 안의 데이터를 파일시스템에서 지우든, 그냥 놔두든 사용자 마음대로 할 수 있다. 이 쿼리는 복제되는 명령이라(리더 레플리카에서만 실행 가능) 모든 레플리카의 detached 디렉터리로 데이터가 옮겨진다.
핵심 포인트
- DETACH PARTITION: 지정 파티션 데이터를 detached 디렉터리로 이동, 서버는 이제 그 데이터가 없는 것처럼 취급 — 삭제가 아니라 비활성화
- 리더 레플리카에서만 실행 가능한 복제 명령 — 모든 레플리카의 detached 디렉터리로 데이터 이동
ATTACH PARTITION — 체크섬 검증 후 즉시 활성화
ATTACH PARTITION은 반대 방향이다 — detached 디렉터리에 있는 데이터를 다시 테이블에 붙인다. 파티션 전체 단위로도, 개별 파트(PART) 단위로도 붙일 수 있다. ClickHouse는 detached/ 디렉터리에서 데이터를 읽어 체크섬을 검증하고, 통과하면 그 파트들을 활성 상태로 만든다 — 이 시점부터 쿼리가 즉시 그 데이터를 쓸 수 있다.
핵심 포인트
- ATTACH PARTITION: detached 디렉터리의 데이터를 파티션 전체 또는 개별 PART 단위로 다시 활성화
- 붙이기 전 체크섬을 검증하고 통과하면 즉시 쿼리가 그 데이터를 쓸 수 있게 활성화
실무 용도 — clickhouse-learn-03의 PARTITION BY 설계와 맞물리는 운영 패턴
이 둘을 함께 쓰면 파티션 단위로 데이터를 다른 테이블로 옮기거나(한 테이블에서 DETACH한 뒤 다른 테이블의 detached 디렉터리에 넣고 ATTACH), 백업에서 특정 파티션만 복구하거나, 손상된 파티션을 통째로 교체하거나, 다운타임 없이 스키마를 바꾸는(새 스키마 테이블을 만들어 옛 파티션들을 옮겨 붙이는) 작업이 가능해진다. clickhouse-learn-03에서 강조한 '파티션 키는 신중하게 설계해야 한다'는 원칙이 실무에서 왜 중요한지가 여기서 드러난다 — 파티션이 운영 단위(백업·이관·교체)의 기본 단위 그 자체이기 때문이다.
핵심 포인트
- DETACH+ATTACH 조합: 파티션 단위 데이터 이관, 백업에서 특정 파티션만 복구, 손상 파티션 교체, 무중단 스키마 변경
- clickhouse-learn-03의 파티션 키 설계 원칙이 실무에서 중요한 이유 — 파티션이 백업·이관·교체 같은 운영 작업의 기본 단위이기 때문