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

system.asynchronous_loader

Запросы в ClickHouse Cloud

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

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

Пример:

SELECT *
FROM system.asynchronous_loader
LIMIT 1
FORMAT Vertical

Столбцы:

  • 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)) - Время, когда задача стала готовой и была помещена в очередь готовых задач своего пула. Нуль, если задача еще не готова.
  • start_time (Nullable(DateTime64)) - Время, когда работник извлекает задачу из очереди готовых задач и начинает ее выполнение. Нуль, если задача еще не начата.
  • finish_time (Nullable(DateTime64)) - Время, когда выполнение задачи завершено. Нуль, если задача еще не завершена.