Перейти к основному содержимому
Перейти к основному содержимому

system.asynchronous_loader

Querying in ClickHouse Cloud

The data in this system table is held locally on each node in ClickHouse Cloud. Obtaining a complete view of all data, therefore, requires the clusterAllReplicas function. See here for further details.

Содержит информацию и статус недавних асинхронных заданий (например, для загружаемых таблиц). Таблица содержит строку для каждого задания. Существует инструмент для визуализации информации из этой таблицы utils/async_loader_graph.

Пример:

Колонки:

  • job (String) - Имя задания (может быть не уникальным).
  • job_id (UInt64) - Уникальный ID задания.
  • dependencies (Array(UInt64)) - Список ID заданий, которые должны быть выполнены перед этим заданием.
  • dependencies_left (UInt64) - Текущее количество зависимостей, которые еще нужно выполнить.
  • status (Enum) - Текущий статус загрузки задания: PENDING: Загрузка задания еще не началась. OK: Загрузка задания выполнена и успешна. FAILED: Загрузка задания выполнена и завершилась неудачно. CANCELED: Загрузка задания не будет выполнена из-за удаления или сбоя зависимости.

Ожидающее задание может находиться в одном из следующих состояний:

  • is_executing (UInt8) - Задание в настоящее время выполняется работником.
  • is_blocked (UInt8) - Задание ожидает завершения своих зависимостей.
  • is_ready (UInt8) - Задание готово к выполнению и ожидает работника.
  • elapsed (Float64) - Секунды, прошедшие с начала выполнения. Ноль, если задание не начато. Общее время выполнения, если задание завершено.

Каждое задание связано с пулом и запускается в этом пуле. Каждый пул имеет постоянный приоритет и изменяемое максимальное число работников. Задания с более высоким приоритетом (меньшее значение 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)) - Не нулевое для готовых заданий. Работник извлекает следующее задание для выполнения из готовой очереди своего пула. Если существует несколько готовых заданий, то выбирается задание с наименьшим значением ready_seqno.

  • waiters (UInt64) - Количество потоков, ожидающих это задание.

  • exception (Nullable(String)) - Не нулевое для неудавшихся и отмененных заданий. Содержит сообщение об ошибке, возникшей во время выполнения запроса, или ошибку, приведшую к отмене этого задания вместе с цепочкой имен заданий, приведших к сбою зависимости.

Момент времени во время жизни задания:

  • schedule_time (DateTime64) - Время, когда задание было создано и запланировано к выполнению (обычно со всеми зависимостями).
  • enqueue_time (Nullable(DateTime64)) - Время, когда задание стало готовым и было добавлено в очередь готовых заданий своего пула. Null, если задание еще не готово.
  • start_time (Nullable(DateTime64)) - Время, когда работник извлекает задание из готовой очереди и начинает его выполнение. Null, если задание еще не начато.
  • finish_time (Nullable(DateTime64)) - Время, когда выполнение задания завершено. Null, если задание еще не завершено.