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

TASKS

Описание​

Табличная функция, создающая временную таблицу задач для просмотра информации о задачах, созданных заданиями в текущем кластере Doris.

Синтаксис​

TASKS(
"type"="<type>"
)

Обязательные параметры​

ПолеОписание
<type>Тип задачи:
insert: задача типа insert into.
mv: задача обновления материализованного представления.

Возвращаемое значение​

  • tasks("type"="insert") возвращаемое значение для задач типа insert

    Имя поляОписание
    TaskIdID задачи
    JobIdID задания
    JobNameИмя задания
    LabelМетка
    StatusСтатус задачи
    ErrorMsgИнформация об ошибке задачи
    CreateTimeВремя создания задачи
    FinishTimeВремя завершения задачи
    TrackingUrlURL для отслеживания
    LoadStatisticСтатистика загрузки
    UserПользователь
  • tasks("type"="mv") возвращаемое значение для задач типа MV

    Имя поляОписание
    TaskIdУникальный ID задачи обновления. При каждом обновлении материализованного представления создаётся новая запись задачи.
    JobIdID задания, создавшего эту задачу. Соответствует jobs("type"="mv").Id.
    JobNameИмя задания, создавшего эту задачу. Соответствует mv_infos("database"="...").JobName и jobs("type"="mv").Name.
    MvIdID материализованного представления, которое обновляет эта задача.
    MvNameИмя материализованного представления, которое обновляет эта задача.
    MvDatabaseIdID базы данных, содержащей материализованное представление.
    MvDatabaseNameИмя базы данных, содержащей материализованное представление.
    StatusСтатус задачи. Возможные значения: PENDING означает, что задача ожидает запуска; RUNNING означает, что задача выполняется; SUCCESS означает, что задача успешно завершена; FAILED означает, что задача завершилась с ошибкой; CANCELED означает, что задача отменена.
    ErrorMsgСообщение об ошибке, если Status имеет значение FAILED или CANCELED. Пустое значение при успешном завершении задачи.
    CreateTimeВремя создания записи задачи.
    StartTimeВремя начала выполнения задачи. Может иметь значение \N, если задача ещё не запущена.
    FinishTimeВремя завершения задачи. Может иметь значение \N, если задача ещё ожидает запуска или выполняется.
    DurationMsПродолжительность выполнения в миллисекундах, вычисляемая как FinishTime - StartTime. Может иметь значение \N, если задача ещё не завершена.
    TaskContextСтрока JSON, описывающая, как была запущена задача и что запросил пользователь. Обычно содержит поля triggerMode, partitions и isComplete. Поле triggerMode принимает значения MANUAL, COMMIT и SYSTEM.
    RefreshModeФактический объём обновления, определённый этой задачей. Возможные значения: COMPLETE означает, что обновлены все разделы материализованного представления; PARTIAL означает, что обновлена только часть разделов; NOT_REFRESH означает, что ни один раздел не требовал обновления.
    NeedRefreshPartitionsМассив JSON с разделами материализованного представления, которые требовали обновления в этой задаче. Пустой массив означает, что ни один раздел не требовал обновления.
    CompletedPartitionsМассив JSON с разделами, которые были успешно обновлены. Сравните его с NeedRefreshPartitions, чтобы проверить, завершено ли обновление всех требуемых разделов.
    ProgressХод обновления в формате percentage (completed/total), например 100.00% (1/1). Может иметь значение \N, если нет разделов для обновления.
    LastQueryIdID запроса SQL, выполненного задачей обновления. Используйте этот ID для поиска в журналах FE или BE при диагностике ошибок задачи. Может быть пустым, если SQL для обновления не выполнялся. Это поле поддерживается начиная с Doris 3.0.0.
    ComputeGroupCompute Group, которую использовала задача обновления. Поле может быть пустым, если группа не указана или развёртывание не предусматривает разделения вычислений и хранения.
    IvmFallbackReasonСтабильный код причины, записываемый, когда IVM не может выполняться и происходит переход к резервному способу обновления либо когда строгое обновление IVM завершается ошибкой. Пустое значение, если перехода к резервному способу обновления IVM не было.
    IvmRebuiltPartitionsКоличество разделов материализованного представления IVM, которые были полностью перестроены при этом обновлении, хотя запрос на обновление не требовал перестроения: представление обновлялось впервые или его базовое состояние стало недействительным. Значение равно 0, если было запрошено обновление COMPLETE или материализованное представление не использует IVM. Условия, при которых это происходит, описаны в разделе Первое обновление и перестроение базового состояния.

Поля перечислений задач MV​

При проверке задач обновления материализованных представлений часто используются следующие поля перечислений:

  • Status: состояние задачи на протяжении её жизненного цикла.
    • PENDING: задача создана, но её выполнение ещё не началось. Она ожидает планирования или выделения ресурсов.
    • RUNNING: задача выполняется.
    • SUCCESS: задача успешно завершена.
    • FAILED: задача завершилась с ошибкой. Сначала проверьте ErrorMsg, а затем используйте LastQueryId для поиска в журналах, если это поле не пустое.
    • CANCELED: задача была отменена до завершения.
  • TaskContext.triggerMode: причина создания задачи.
    • MANUAL: задача создана командой ручного обновления, например REFRESH MATERIALIZED VIEW.
    • COMMIT: задача создана, поскольку изменения данных в связанных базовых таблицах вызвали обновление.
    • SYSTEM: задача создана внутренним действием системы, например для первоначального построения материализованного представления, созданного с немедленным построением.
  • TaskContext.isComplete: указывает, запрашивается ли полное обновление.
    • true: запрос предписывает Doris обновить все разделы материализованного представления.
    • false: запрос не требует обязательного полного обновления. Doris может определить фактический объём обновления на основе актуальности разделов.
  • TaskContext.refreshMode: способ обновления, запрошенный пользователем: AUTO, COMPLETE, PARTITIONS или INCREMENTAL. У старых задач это поле может отсутствовать.
  • TaskContext.af: указывает, разрешён ли переход к резервному способу обновления; соответствует FALLBACK. Это поле также может отображаться под совместимым именем allowFallback; у старых задач оно может отсутствовать.
  • RefreshMode: фактический объём обновления, выбранный задачей после проверки разделов.
    • COMPLETE: для обновления выбраны все разделы материализованного представления, принадлежащие этому MV.
    • PARTIAL: для обновления выбрана только часть разделов материализованного представления.
    • NOT_REFRESH: ни один раздел не требовал обновления. В этом случае NeedRefreshPartitions обычно содержит пустой массив, а Progress может иметь значение \N.
  • IvmFallbackReason: причина перехода к резервному способу обновления на этапе предварительного выполнения IVM или ошибки строгого инкрементального обновления, например STREAM_UNSUPPORTED, MIN_MAX_BOUNDARY_HIT, BITMAP_AGG_DELETE или PLAN_SIGNATURE_MISMATCH. Сведения о диагностике приведены в разделе Инкрементальное обслуживание представлений (IVM).
Версия

LastQueryId поддерживается начиная с Doris 3.0.0. В Doris 2.1.x это поле недоступно.

Примеры​

Просмотр последней задачи обновления материализованного представления.

select *
from tasks("type"="mv")
where MvDatabaseName = "test" and MvName = "mv1"
order by CreateTime desc
limit 1\G
*************************** 1. row ***************************
TaskId: 437156301250803
JobId: 19508
JobName: inner_mtmv_19494
MvId: 19494
MvName: mv1
MvDatabaseId: 16016
MvDatabaseName: test
Status: SUCCESS
ErrorMsg:
CreateTime: 2025-01-07 22:13:48
StartTime: 2025-01-07 22:13:48
FinishTime: 2025-01-07 22:17:45
DurationMs: 236985
TaskContext: {"triggerMode":"MANUAL","partitions":[],"isComplete":false}
RefreshMode: COMPLETE
NeedRefreshPartitions: ["p_20210101_MAXVALUE","p_20200101_20210101"]
CompletedPartitions: ["p_20210101_MAXVALUE","p_20200101_20210101"]
Progress: 100.00% (2/2)
LastQueryId: 7965b4ddce8a4480-8884e9701679c1c4
ComputeGroup: \N
IvmFallbackReason: \N
IvmRebuiltPartitions: 0

В этом результате:

  • TaskId идентифицирует это выполнение обновления. При каждом обновлении он отличается.
  • JobId и JobName идентифицируют задание обновления MV. Информацию о задании можно получить запросом select * from jobs("type"="mv") where Name = "inner_mtmv_19494";.
  • MvId, MvName, MvDatabaseId и MvDatabaseName идентифицируют материализованное представление, обновлённое задачей.
  • Status имеет значение SUCCESS, то есть задача успешно завершена. Если значение равно FAILED, сначала проверьте ErrorMsg.
  • CreateTime, StartTime, FinishTime и DurationMs показывают время создания задачи, время начала и окончания её выполнения, а также продолжительность выполнения.
  • TaskContext показывает, что задача была запущена вручную. Значение partitions: [] означает, что пользователь не указал список разделов в команде обновления.
  • RefreshMode имеет значение COMPLETE, то есть эта задача обновила все разделы материализованного представления, требовавшие обновления.
  • NeedRefreshPartitions содержит два раздела, требовавших обновления, а CompletedPartitions содержит те же два раздела, то есть обновление всех требуемых разделов завершено.
  • Progress имеет значение 100.00% (2/2), что также означает завершение обновления двух из двух требуемых разделов.
  • LastQueryId содержит ID запроса SQL, выполнявшего обновление. Используйте его для поиска в журналах Doris, если задача завершается с ошибкой или выполняется медленно.
  • ComputeGroup содержит пустое значение, то есть в этом примере выделенная Compute Group не была записана.
  • IvmFallbackReason содержит пустое значение, то есть в этой задаче не было перехода к резервному способу обновления IVM.
  • IvmRebuiltPartitions имеет значение 0, то есть эта задача не перестраивала дополнительные разделы.
Примечание

Количество сохраняемых и отображаемых записей задач регулируется параметром конфигурации FE max_persistence_task_count. Значение по умолчанию равно 100. Когда количество записей задач превышает этот предел, старые записи удаляются. Если значение меньше 1, записи задач не сохраняются. После изменения этого параметра перезапустите FE.

Просмотр всех задач вставки

select * from tasks("type"="insert");
+----------------+----------------+----------------+-------------------------------+---------+----------+---------------------+---------------------+---------------------+-------------+---------------+------+
| TaskId | JobId | JobName | Label | Status | ErrorMsg | CreateTime | StartTime | FinishTime | TrackingUrl | LoadStatistic | User |
+----------------+----------------+----------------+-------------------------------+---------+----------+---------------------+---------------------+---------------------+-------------+---------------+------+
| 79133848479750 | 78533940810334 | insert_tab_job | 78533940810334_79133848479750 | SUCCESS | | 2025-01-17 14:42:54 | 2025-01-17 14:42:54 | 2025-01-17 14:42:54 | | | root |
+----------------+----------------+----------------+-------------------------------+---------+----------+---------------------+---------------------+---------------------+-------------+---------------+------+