system.asynchronous_loader
이 시스템 테이블의 데이터는 ClickHouse Cloud의 각 노드에 로컬로 저장됩니다. 따라서 전체 데이터를 조회하려면 clusterAllReplicas 함수를 사용해야 합니다. 자세한 내용은 여기를 참고하십시오.
최근 비동기 작업(예: 테이블 로딩)에 대한 정보와 상태를 포함합니다. 이 테이블에는 작업마다 하나의 행이 포함됩니다. 이 테이블의 정보를 시각화하기 위한 도구인 utils/async_loader_graph가 있습니다.
예시:
컬럼:
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) — 현재 작업이 워커에 의해 실행 중인지 여부.is_blocked(UInt8) — 작업이 종속 작업이 완료되기를 기다리는지 여부.is_ready(UInt8) — 작업이 실행할 준비가 되었고 워커를 기다리고 있는지 여부.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이 아닙니다. 워커는 자신의 풀의 준비 큐에서 다음에 실행할 작업을 가져옵니다. 여러 개의 준비된 작업이 있는 경우ready_seqno값이 가장 낮은 작업이 선택됩니다.waiters(UInt64) — 이 작업을 대기 중인 스레드 수.exception(Nullable(String)) — 실패하거나 취소된 작업에 대해서만 Null이 아닙니다. 쿼리 실행 중 발생한 오류 메시지 또는 이 작업의 취소를 야기한 오류와, 작업 이름으로 이루어진 종속 실패 체인을 함께 포함합니다.schedule_time(DateTime64(6)) — 작업이 생성되고 (일반적으로 모든 종속 작업과 함께) 실행되도록 스케줄된 시각.enqueue_time(Nullable(DateTime64(6))) — 작업이 준비 상태가 되어 해당 풀의 준비 큐에 들어간 시각. 작업이 아직 준비되지 않았다면 Null입니다.start_time(Nullable(DateTime64(6))) — 워커가 준비 큐에서 작업을 디큐하고 실행을 시작한 시각. 작업이 아직 시작되지 않았다면 Null입니다.finish_time(Nullable(DateTime64(6))) — 작업 실행이 완료된 시각. 작업이 아직 완료되지 않았다면 Null입니다.
보류 중인 작업은 다음 상태 중 하나일 수 있습니다:
is_executing(UInt8) - 작업이 현재 워커에 의해 실행 중입니다.is_blocked(UInt8) - 작업이 종속성이 완료되기를 기다리는 중입니다.is_ready(UInt8) - 작업이 실행할 준비가 되어 있으며 워커를 기다리고 있습니다.elapsed(Float64) - 실행 시작 이후 경과한 초입니다. 작업이 시작되지 않았다면 0이며, 작업이 완료된 경우 전체 실행 시간입니다.
모든 작업에는 연관된 풀(pool)이 있으며, 이 풀에서 시작됩니다. 각 풀은 고정된 우선순위와 변경 가능한 최대 워커 수를 가집니다. 우선순위가 높을수록(priority 값이 낮을수록) 작업이 먼저 실행됩니다. 더 높은 우선순위의 준비되었거나 실행 중인 작업이 하나라도 있는 동안에는 더 낮은 우선순위의 작업은 시작되지 않습니다. 작업 우선순위는 상향할 수는 있지만(낮출 수는 없음) 우선순위 부여(prioritization)를 통해서만 변경됩니다. 예를 들어, 특정 테이블을 필요로 하는 쿼리가 들어오면 해당 테이블 로딩 및 시작을 위한 작업의 우선순위가 높게 부여됩니다. 작업 실행 중에도 우선순위를 높이는 것은 가능하지만, 작업은 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)) - 준비 상태(ready)인 작업에 대해 널이 아닙니다. 워커는 자신이 속한 풀의 준비 큐에서 다음에 실행할 작업을 가져옵니다. 준비된 작업이 여러 개일 경우,ready_seqno값이 가장 낮은 작업이 선택됩니다. -
waiters(UInt64) - 이 작업을 기다리는 스레드의 수입니다. -
exception(Nullable(String)) - 실패하거나 취소된 작업에 대해 널이 아닙니다. 쿼리 실행 중 발생한 오류 메시지 또는 이 작업을 취소하게 만든 오류와, 종속성 실패로 이어지는 작업 이름 체인을 함께 포함합니다.
작업 수명 주기 동안의 시각:
schedule_time(DateTime64) - 작업이 생성되어 (일반적으로 모든 종속성과 함께) 실행되도록 스케줄된 시각입니다.enqueue_time(Nullable(DateTime64)) - 작업이 준비 상태가 되어, 자신이 속한 풀의 준비 큐에 들어간 시각입니다. 작업이 아직 준비되지 않은 경우 널입니다.start_time(Nullable(DateTime64)) - 워커가 준비 큐에서 작업을 꺼내어 실행을 시작한 시각입니다. 작업이 아직 시작되지 않은 경우 널입니다.finish_time(Nullable(DateTime64)) - 작업 실행이 완료된 시각입니다. 작업이 아직 완료되지 않은 경우 널입니다.