system.mutations
설명
이 테이블에는 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)) — 복제된 테이블의 뮤테이션에서는 배열에 각 파티션당 하나의 레코드가 들어 있으며, 뮤테이션이 획득한 블록 번호를 포함합니다. 해당 파티션에서는 이 번호보다 작은 번호의 블록을 포함한 파트만 뮤테이션됩니다. 복제되지 않은 테이블에서는 모든 파티션의 블록 번호가 하나의 시퀀스를 이룹니다. 즉, 복제되지 않은 테이블의 뮤테이션에서는 이 컬럼에 뮤테이션이 획득한 단일 블록 번호가 포함된 레코드 하나만 들어 있습니다.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 테이블의 진행 상황을 추적하려면 다음 쿼리를 사용하십시오:
참고: system.* 테이블에 대한 읽기 권한이 필요합니다.
ClickHouse Cloud에서는 각 노드의 system.mutations 테이블에 클러스터 전체의 모든 뮤테이션이 포함되어 있으므로 clusterAllReplicas를 사용할 필요가 없습니다.
함께 보기
- 뮤테이션
- MergeTree 테이블 엔진
- ReplicatedMergeTree 계열