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

system.asynchronous_loader

Запросы в ClickHouse Cloud

Данные в этой системной таблице хранятся локально на каждом узле в ClickHouse Cloud. Для получения полного представления о всех данных необходимо использовать функцию clusterAllReplicas. Подробности см. здесь.

Содержит информацию и статус актуальных асинхронных заданий (например, для загрузки таблиц). Таблица содержит строку для каждого задания. Существует инструмент для визуализации информации из этой таблицы 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, если задание еще не завершено.