asynchronous_loader 시스템 테이블
asynchronous_loader 시스템 테이블
asynchronous_loader 시스템 테이블은 최근 비동기 작업(예: 테이블 로딩용)에 대한 정보와 상태를 담고 있어요. 각 작업에 대해 하나의 행을 포함해요. 이 테이블의 정보를 시각화하는 도구로 utils/async_loader_graph가 있어요.
출처: 문서
본문
Querying in ClickHouse Cloud 이 시스템 테이블의 데이터는 ClickHouse Cloud의 각 노드에 로컬로 보관돼요. 따라서 모든 데이터에 대한 완전한 뷰를 얻으려면 clusterAllReplicas 함수가 필요해요. 자세한 내용은 여기를 참고해요.
Description (설명)
최근 비동기 작업(예: 테이블 로딩용)에 대한 정보와 상태를 담고 있어요. 각 작업에 대해 하나의 행을 포함해요. 이 테이블의 정보를 시각화하는 도구 utils/async_loader_graph가 있어요.
Columns (열)
job(String) — 작업 이름(고유하지 않을 수 있음).job_id(UInt64) — 작업의 고유 ID.dependencies(Array(UInt64)) — 이 작업 전에 완료되어야 하는 작업의 ID 목록.dependencies_left(UInt64) — 완료해야 할 남은 의존성 수.status(Enum8(‘PENDING’ = 0, ‘OK’ = 1, ‘FAILED’ = 2, ‘CANCELED’ = 3)) — 작업의 현재 로드 상태: PENDING: 로드 작업이 아직 시작되지 않음. OK: 로드 작업이 실행되어 성공. FAILED: 로드 작업이 실행되어 실패. CANCELED: 로드 작업이 제거 또는 의존성 실패로 실행되지 않을 예정.is_executing(UInt8) — 작업이 현재 worker에 의해 실행 중.is_blocked(UInt8) — 작업이 의존성 완료를 기다리고 있음.is_ready(UInt8) — 작업이 실행 준비가 되어 worker를 기다리고 있음.elapsed(Float64) — 실행 시작 이후 경과한 초. 작업이 시작되지 않았으면 0. 작업이 끝났으면 총 실행 시간.pool_id(UInt64) — 현재 작업에 할당된 풀의 ID.pool(String) —pool_id풀의 이름.priority(Int64) —pool_id풀의 우선순위.execution_pool_id(UInt64) — 작업이 실행되는 풀의 ID. 실행 시작 전에는 처음 할당된 풀과 같음.execution_pool(String) —execution_pool_id풀의 이름.execution_priority(Int64) — execution_pool_id 풀의 우선순위.ready_seqno(Nullable(UInt64)) — 준비된 작업에 대해 null이 아님. worker는 풀의 준비 큐에서 다음으로 실행할 작업을 가져와요. 준비된 작업이 여러 개 있으면ready_seqno값이 가장 낮은 작업이 선택돼요.waiters(UInt64) — 이 작업을 기다리는 스레드 수.exception(Nullable(String)) — 실패 및 취소된 작업에 대해 null이 아님. 쿼리 실행 중 발생한 오류 메시지나 이 작업을 취소하게 한 오류를 의존성 실패 체인과 함께 보관해요.schedule_time(DateTime64(6)) — 작업이 생성되고 실행하도록 예약된 시간(보통 모든 의존성과 함께).enqueue_time(Nullable(DateTime64(6))) — 작업이 준비가 되어 풀의 준비 큐에 들어간 시간. 작업이 아직 준비되지 않았으면 null.start_time(Nullable(DateTime64(6))) — worker가 준비 큐에서 작업을 디큐하고 실행을 시작한 시간. 작업이 아직 시작되지 않았으면 null.finish_time(Nullable(DateTime64(6))) — 작업 실행이 끝난 시간. 작업이 아직 끝나지 않았으면 null.
대기 중(pending) 작업은 다음 상태 중 하나일 수 있어요.
is_executing(UInt8) - 작업이 현재 worker에 의해 실행 중.is_blocked(UInt8) - 작업이 의존성 완료를 기다리고 있음.is_ready(UInt8) - 작업이 실행 준비가 되어 worker를 기다리고 있음.elapsed(Float64) - 실행 시작 이후 경과한 초. 작업이 시작되지 않았으면 0. 작업이 끝났으면 총 실행 시간.
모든 작업에는 연관된 풀이 있으며 이 풀에서 시작돼요. 각 풀은 상수 우선순위와 변경 가능한 최대 worker 수를 가져요. 더 높은 우선순위(낮은 priority 값)의 작업이 먼저 실행돼요. 준비되거나 실행 중인 더 높은 우선순위 작업이 하나라도 있는 동안에는 더 낮은 우선순위 작업이 시작되지 않아요. 작업 우선순위는 우선순위를 부여함으로써 상향(그러나 하향은 안 됨)될 수 있어요. 예를 들어 테이블 로딩 및 시작을 위한 작업은 들어오는 쿼리가 해당 테이블을 요구하면 우선순위가 부여돼요. 실행 중에 작업에 우선순위를 부여하는 것도 가능하지만, 작업은 execution_pool에서 새로 할당된 pool로 이동되지 않아요. 이 작업은 우선순위 역전을 피하기 위해 새 작업을 만들 때 pool을 사용해요. 이미 시작된 작업은 더 높은 우선순위 작업에 의해 선점되지 않으며 시작 후 항상 완료까지 실행돼요.
- pool_id ( UInt64 ) - 현재 작업에 할당된 풀의 ID.
- pool ( String ) - pool_id 풀의 이름.
- priority ( Int64 ) - pool_id 풀의 우선순위.
- execution_pool_id ( UInt64 ) - 작업이 실행되는 풀의 ID. 실행 시작 전에는 처음 할당된 풀과 같음.
- execution_pool ( String ) - execution_pool_id 풀의 이름.
- execution_priority ( Int64 ) - execution_pool_id 풀의 우선순위.
- ready_seqno ( Nullable(UInt64) ) - 준비된 작업에 대해 null이 아님. worker는 풀의 준비 큐에서 다음으로 실행할 작업을 가져와요. 준비된 작업이 여러 개 있으면 ready_seqno 값이 가장 낮은 작업이 선택돼요.
- waiters ( UInt64 ) - 이 작업을 기다리는 스레드 수.
- exception ( Nullable(String) ) - 실패 및 취소된 작업에 대해 null이 아님. 쿼리 실행 중 발생한 오류 메시지나 이 작업을 취소하게 한 오류를 의존성 실패 체인과 함께 보관해요.
작업 수명 중의 시간 지점:
schedule_time(DateTime64) - 작업이 생성되고 실행하도록 예약된 시간(보통 모든 의존성과 함께).enqueue_time(Nullable(DateTime64)) - 작업이 준비가 되어 풀의 준비 큐에 들어간 시간. 작업이 아직 준비되지 않았으면 null.start_time(Nullable(DateTime64)) - worker가 준비 큐에서 작업을 디큐하고 실행을 시작한 시간. 작업이 아직 시작되지 않았으면 null.finish_time(Nullable(DateTime64)) - 작업 실행이 끝난 시간. 작업이 아직 끝나지 않았으면 null.
Example (예제)
SELECT *
FROM system.asynchronous_loader
LIMIT 1
FORMAT Vertical