Skip to main content
All quickstarts
데이터 웨어하우징OSS
ClickHouse는 대용량 분석 워크로드에 맞게 설계되었지만, 일부 경우에는 기존 데이터를 수정하거나 삭제할 수 있습니다. 이러한 작업은 “뮤테이션”이라고 하며 ALTER TABLE 명령을 사용해 수행됩니다.
업데이트를 자주 수행해야 한다면 ClickHouse의 중복 제거 사용을 고려하십시오. 이 기능을 사용하면 뮤테이션 이벤트를 생성하지 않고도 행을 업데이트하거나 삭제할 수 있습니다. 또는 경량 업데이트 또는 경량한 삭제 를 사용하십시오.

데이터 업데이트

테이블의 행을 업데이트하려면 ALTER TABLE...UPDATE 명령을 사용하십시오:
<expression><filter_expr>를 만족하는 행에서 해당 컬럼의 새 값입니다. <expression>은 컬럼과 동일한 데이터 형식이어야 하며, 또는 CAST 연산자를 사용해 동일한 데이터 형식으로 변환할 수 있어야 합니다. <filter_expr>는 데이터의 각 행에 대해 UInt8 값(0 또는 0이 아닌 값)을 반환해야 합니다. 여러 UPDATE <column> SQL 문은 쉼표로 구분해 하나의 ALTER TABLE 명령에 결합할 수 있습니다. 예시:
  1. 다음과 같은 뮤테이션을 사용하면 딕셔너리 조회를 통해 visitor_id를 새 값으로 업데이트할 수 있습니다.
  2. 하나의 명령으로 여러 값을 수정하는 것이 여러 명령을 실행하는 것보다 더 효율적일 수 있습니다.
  3. 세그먼트로 나뉜 테이블의 경우 ON CLUSTER에서 뮤테이션을 실행할 수 있습니다.
프라이머리 키 또는 정렬 키의 일부인 컬럼은 업데이트할 수 없습니다.

데이터 삭제

행을 삭제하려면 ALTER TABLE 명령을 사용하십시오:
<filter_expr>는 각 행에 대해 UInt8 값을 반환해야 합니다. 예시
  1. 컬럼 값이 값 배열에 포함된 레코드를 삭제합니다:
  2. 이 쿼리는 무엇을 변경합니까?
테이블의 모든 데이터를 삭제하려면 TRUNCATE TABLE [<database].]<table> 명령을 사용하는 것이 더 효율적입니다. 이 명령은 ON CLUSTER에서도 실행할 수 있습니다.
자세한 내용은 DELETE SQL 문 문서 페이지를 참조하십시오.

경량한 삭제

행을 삭제하는 또 다른 방법은 DELETE FROM 명령을 사용하는 것이며, 이를 경량한 삭제라고 합니다. 삭제된 행은 즉시 삭제된 것으로 표시되고, 이후 실행되는 모든 쿼리에서 자동으로 필터링되므로 파트 병합을 기다리거나 FINAL 키워드를 사용할 필요가 없습니다. 데이터 정리는 백그라운드에서 비동기적으로 수행됩니다.
예를 들어, 다음 쿼리는 Title 컬럼에 hello 문자열이 포함된 hits 테이블의 모든 행을 삭제합니다:
경량한 삭제에 관한 몇 가지 참고 사항입니다:
  • 이 기능은 MergeTree 테이블 엔진 계열에서만 사용할 수 있습니다.
  • 경량한 삭제는 기본적으로 동기식으로 동작하며, 모든 레플리카가 삭제를 처리할 때까지 대기합니다. 이 동작은 lightweight_deletes_sync 설정으로 제어됩니다.
Last modified on July 8, 2026