system.mutations 시스템 테이블
system.mutations 시스템 테이블
system.mutations 는 MergeTree 테이블의 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
-
MergeTree table engine
-
ReplicatedMergeTree family