메인 콘텐츠로 건너뛰기

설명

이 테이블에는 MergeTree 테이블의 뮤테이션과 해당 진행 상태에 관한 정보가 포함되어 있습니다. 각 뮤테이션 명령은 하나의 행으로 표시됩니다.

컬럼:

  • database (String) — 뮤테이션이 적용된 데이터베이스 이름입니다.
  • table (String) — 뮤테이션이 적용된 테이블 이름입니다.
  • mutation_id (String) — 뮤테이션의 ID입니다. 복제된 테이블에서는 이 ID가 ClickHouse Keeper의 <table_path_in_clickhouse_keeper>/mutations/ 디렉터리에 있는 znode 이름에 해당합니다. 비복제 테이블에서는 이 ID가 테이블의 데이터 디렉터리에 있는 파일 이름에 해당합니다.
  • command (String) — 뮤테이션 명령 문자열입니다(ALTER TABLE [db.]table 뒤의 쿼리 부분).
  • create_time (DateTime) — 뮤테이션 명령이 실행되도록 제출된 날짜와 시간입니다.
  • block_numbers.partition_id (Array(String)) — 복제된 테이블의 뮤테이션에서는 배열에 파티션 ID가 들어 있습니다(파티션당 하나의 레코드). 비복제 테이블의 뮤테이션에서는 배열이 비어 있습니다.
  • block_numbers.number (Array(Int64)) — 복제된 테이블의 뮤테이션에서는 배열에 각 파티션별로 하나의 레코드가 들어 있으며, 여기에는 뮤테이션이 획득한 block 번호가 포함됩니다. 해당 파티션에서는 이 번호보다 작은 번호의 block을 포함한 파트만 뮤테이션됩니다. 비복제 테이블에서는 모든 파티션의 block 번호가 하나의 단일 시퀀스를 이룹니다. 즉, 비복제 테이블의 뮤테이션에서는 이 컬럼에 뮤테이션이 획득한 단일 block 번호를 담은 레코드 하나가 들어 있습니다.
  • parts_in_progress_names (Array(String)) — 현재 뮤테이션이 진행 중인 데이터 파트 이름의 배열입니다.
  • parts_to_do_names (Array(String)) — 뮤테이션을 완료하기 위해 처리해야 하는 데이터 파트 이름의 배열입니다.
  • parts_to_do (Int64) — 뮤테이션을 완료하기 위해 처리해야 하는 데이터 파트 수입니다. 참고: parts_to_do = 0이어도, 뮤테이션이 필요한 새 데이터 파트를 생성하는 장시간 실행 중인 INSERT 때문에 복제된 테이블의 뮤테이션이 아직 완료되지 않았을 수 있습니다.
  • parts_postpone_reasons (Map(String, String)) — 파트 이름을 해당 파트가 지연된 이유에 매핑한 맵입니다.
  • is_done (UInt8) — 뮤테이션 완료 여부를 나타내는 플래그입니다. 가능한 값: 뮤테이션이 완료되었으면 1, 아직 진행 중이면 0입니다.
  • is_killed (UInt8) — 뮤테이션이 중지되었는지 여부를 나타냅니다. ClickHouse Cloud에서만 사용할 수 있습니다. 참고: is_killed=1이라고 해서 반드시 뮤테이션이 완전히 종료된 것은 아닙니다. is_killed=1이고 is_done=0인 상태로 뮤테이션이 오랜 시간 남아 있을 수 있습니다. 이는 다른 장시간 실행 중인 뮤테이션이 중지된 뮤테이션을 막고 있을 때 발생할 수 있습니다. 이는 정상적인 상황입니다.
  • latest_failed_part (String) — 가장 최근에 뮤테이션하지 못한 파트의 이름입니다.
  • latest_fail_time (DateTime) — 가장 최근의 파트 뮤테이션 실패가 발생한 날짜와 시간입니다.
  • latest_fail_reason (String) — 가장 최근의 파트 뮤테이션 실패를 일으킨 예외 메시지입니다.
  • latest_fail_error_code_name (String) — 가장 최근의 파트 뮤테이션 실패를 일으킨 예외의 오류 코드입니다.
  • 파트 이름이 parts_postpone_reasons에 없고 아직 뮤테이션이 실행되지 않았다면, 해당 파트에 대한 뮤테이션이 아직 예약되지 않았음을 의미합니다.
  • 파트 이름 all_parts는 아직 뮤테이션이 실행되지 않은 모든 파트를 나타냅니다.
  • is_killed (UInt8) — 뮤테이션이 중지되었는지 여부를 나타냅니다. ClickHouse Cloud에서만 사용할 수 있습니다.
is_killed=1이라고 해서 뮤테이션이 완전히 종료되었다는 뜻은 아닙니다. is_killed=1이고 is_done=0인 상태로 뮤테이션이 오랫동안 유지될 수 있습니다. 이는 장시간 실행 중인 다른 뮤테이션이 중지된 뮤테이션을 막고 있을 때 발생할 수 있습니다. 이는 정상적인 상황입니다.
  • is_done (UInt8) — 뮤테이션 완료 여부를 나타내는 플래그입니다. 가능한 값:
    • 뮤테이션이 완료된 경우 1,
    • 뮤테이션이 아직 진행 중인 경우 0.
parts_to_do = 0이더라도, 뮤테이션이 적용되어야 하는 새 데이터 파트를 생성하는 장시간 실행 중인 INSERT 쿼리 때문에 복제된 테이블의 뮤테이션이 아직 완료되지 않았을 수 있습니다.
일부 데이터 파트의 뮤테이션 처리 중 문제가 발생했다면, 다음 컬럼에 추가 정보가 포함됩니다:
  • latest_failed_part (String) — 뮤테이션을 적용할 수 없었던 가장 최근 파트의 이름입니다.
  • latest_fail_time (DateTime) — 가장 최근 파트 뮤테이션 실패가 발생한 날짜와 시간입니다.
  • latest_fail_reason (String) — 가장 최근 파트 뮤테이션 실패를 일으킨 예외 메시지입니다.

뮤테이션 모니터링

system.mutations 테이블의 진행 상태를 확인하려면 다음 쿼리를 사용하십시오:
SELECT * FROM clusterAllReplicas('cluster_name', 'system', 'mutations')
WHERE is_done = 0 AND table = 'tmp';

-- 또는

SELECT * FROM clusterAllReplicas('cluster_name', 'system.mutations')
WHERE is_done = 0 AND table = 'tmp';
참고: 이를 위해서는 system.* 테이블에 대한 읽기 권한이 필요합니다.
Cloud 사용ClickHouse Cloud에서는 각 노드의 system.mutations 테이블에 클러스터의 모든 뮤테이션이 포함되어 있으므로 clusterAllReplicas는 필요하지 않습니다.

관련 항목

마지막 수정일 2026년 6월 10일