system.asynchronous_loader
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, если задание еще не завершено.