system.mutations 시스템 테이블

system.mutations 시스템 테이블

system.mutationsMergeTree 테이블의 mutations 및 그 진행 상황에 대한 정보를 담고 있어요. 각 돌연변이 명령은 하나의 행으로 표현돼요.

출처: 문서

본문

Description

테이블은 MergeTree 테이블의 mutations 및 그 진행 상황에 대한 정보를 포함해요. 각 돌연변이 명령은 하나의 행으로 표현돼요.

돌연변이 모니터링

system.mutations 테이블에서 진행 상황을 추적하려면 다음 쿼리를 사용해요:

SELECT * FROM clusterAllReplicas('cluster_name', 'system', 'mutations')
WHERE is_done = 0 AND table = 'tmp';

-- or

SELECT * FROM clusterAllReplicas('cluster_name', 'system.mutations')
WHERE is_done = 0 AND table = 'tmp';

참고: 이것은 system.* 테이블에 대한 읽기 권한이 필요해요.

Cloud 사용 ClickHouse Cloud에서 각 노드의 system.mutations 테이블은 클러스터의 모든 돌연변이를 가지므로 clusterAllReplicas 가 필요하지 않아요.

Columns

  • 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) — 돌연변이 명령이 실행을 위해 제출된 날짜와 시간이에요.

  • finish_time (DateTime) — 돌연변이가 완료된 날짜와 시간이에요. 돌연변이가 아직 완료되지 않았거나 완료 시간을 알 수 없으면 0이에요. 복제되지 않은 테이블의 경우 값은 메모리에서 추적되며 테이블이 다시 로드될 때(예: 서버 재시작 시) 리셋돼요. 복제 테이블의 경우 값은 복제본별이며, 재시작 후 가장 최근에 완료된 돌연변이의 완료 시간은 Keeper에서 복원되고 더 오래된 완료된 돌연변이는 0을 보고해요.

  • 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) — 돌연변이가 중단(kill)되었는지 여부를 나타내요. 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) — 가장 최근 파트 돌연변이 실패를 일으킨 예외 메시지예요.

See Also