Как выполняется поток

Движок выполняет граф зависимостей: готовые независимые блоки работают параллельно, необходимые входы ожидаются, результаты передаются следующим шагам. Получатели сначала подготавливают и проверяют данные; запись выполняется отдельным этапом. Зависимые шаги продолжаются после получения результата предыдущей операции. Параллельное выполнение сокращает ожидание между независимыми действиями, сохраняя зависимости графа.

Параллельность без изменения зависимостей

Координатор запускает только блоки с готовыми входами. Объединяющий блок ожидает все входы, включая сигнал о неактивном маршруте. Несколько получателей также могут подготавливаться параллельно. Если внешние действия требуют строгой последовательности, задайте её связью от выхода результата предыдущего получателя.

Параметр GRAPH_PARALLELISM по умолчанию равен 4. Это верхняя граница одновременных работ графа, а не обещание четырёхкратного ускорения. Реальный эффект зависит от внешнего API, объёма памяти и формы графа.

Подготовка, снимок и запись

Поясняющая схемаУвеличить ↗Один этап выполнения: две независимые ветви подготавливаются параллельно. Если последующим блокам нужен результат записи, движок продолжает граф после записи этого этапа. Общей транзакции между внешними системами нет.
Как движок подготавливает и записывает данные

Один этап выполнения: две независимые ветви подготавливаются параллельно. Если последующим блокам нужен результат записи, движок продолжает граф после записи этого этапа. Общей транзакции между внешними системами нет.

  1. Источники читаются и преобразуются.
  2. Каждый получатель проверяет схемы, координаты и ключи и подготавливает неизменяемый набор операций.
  3. Проверяются конфликты получателей, работающих с одним объектом.
  4. Перед порциями записи повторно проверяются права, лицензия и актуальность ревизий.
  5. Сохраняется количество подтверждённых и неподтверждённых операций.

Ограничения ресурсов

ЛимитЗначение по умолчаниюВлияние на пользователя
Ячейки таблицы2 000 000Чрезмерно широкий или большой результат блока отклоняется.
Объём снимка графа512 МиБРезультаты просмотра не могут бесконтрольно заполнять хранилище.
ГрафДо 256 узлов и 512 связейРазделяйте слишком большие процессы на управляемые потоки.
Интерактивное ожидание12 часовШаг ввода данных не ждёт пользователя бесконечно.

Повышение производительности

  • Ограничивайте диапазоны, списки колонок и число строк как можно ближе к источнику.
  • Отбирайте нужные записи до ресурсоёмких соединений и группировок.
  • Проверяйте уникальность ключей Join, чтобы избежать неожиданного размножения строк.
  • Согласуйте размеры порций записи с возможностями получателя.
  • По журналу отдельно измеряйте чтение, преобразование и запись; не распространяйте результаты одного набора данных на все сценарии.

Параллельные запуски и порядок записи

У потока может быть несколько одновременных запусков. Стандартный лимит параллельности одного потока — 4; число рабочих потоков исполнителя настраивается отдельно. Записи в одинаковые ячейки, ключи таблицы или файл упорядочиваются, а независимые объекты могут записываться параллельно. Очистка куба резервирует объект целиком. «Ожидание очереди записи…» означает, что должна завершиться более ранняя конфликтующая запись.