ALTER TABLE ... APPLY PATCHES
ALTER TABLE ... APPLY PATCHES
APPLY PATCHES는 경량 UPDATE 문이 만든 패치 파트의 물리적 구체화를 수동으로 트리거하는 ALTER 명령이에요. 보류 중인 패치를 관련 컬럼만 다시 써서 데이터 파트에 강제로 적용해요.
출처: 문서
본문
ALTER TABLE [db.]table [ON CLUSTER cluster] APPLY PATCHES [IN PARTITION partition_id]
이 명령은 경량 UPDATE 문이 만든 패치 파트의 물리적 구체화를 수동으로 트리거해요. 보류 중인 패치를 관련 컬럼만 다시 써서 데이터 파트에 강제로 적용해요.
-
MergeTree 계열(replicated 테이블 포함)의 테이블에서만 동작해요.
-
이것은 변경(mutation) 작업이며 백그라운드에서 비동기로 실행돼요.
APPLY PATCHES를 사용해야 하는 경우
일반적으로 APPLY PATCHES를 사용할 필요는 없어요.
패치 파트는 보통 apply_patches_on_merge 설정이 활성화된(기본값) 병합 중 자동으로 적용돼요. 하지만 다음 시나리오에서는 패치 적용을 수동으로 트리거하고 싶을 수 있어요:
-
SELECT쿼리 중 패치 적용 오버헤드를 줄이려고 할 때 -
여러 패치 파트가 쌓이기 전에 통합하려고 할 때
-
패치가 이미 구체화된 상태로 백업 또는 내보내기를 준비할 때
-
apply_patches_on_merge가 비활성화되어 있고 패치가 적용되는 시점을 제어하고 싶을 때
예시
테이블의 모든 보류 패치 적용:
ALTER TABLE my_table APPLY PATCHES;
특정 파티션에만 패치 적용:
ALTER TABLE my_table APPLY PATCHES IN PARTITION '2024-01';
다른 작업과 결합:
ALTER TABLE my_table APPLY PATCHES, UPDATE column = value WHERE condition;
패치 적용 모니터링
system.mutations 테이블로 패치 적용 진행 상황을 모니터링할 수 있어요:
SELECT * FROM system.mutations
WHERE table = 'my_table' AND command LIKE '%APPLY PATCHES%';
함께 보기
-
경량 UPDATE - 경량 업데이트로 패치 파트 생성
-
apply_patches_on_merge 설정 - 병합 중 자동 패치 적용 제어