Как выполняется поток
Движок выполняет граф зависимостей: готовые независимые блоки работают параллельно, необходимые входы ожидаются, результаты передаются следующим шагам. Получатели сначала подготавливают и проверяют данные; запись выполняется отдельным этапом. Зависимые шаги продолжаются после получения результата предыдущей операции. Параллельное выполнение сокращает ожидание между независимыми действиями, сохраняя зависимости графа.
Параллельность без изменения зависимостей
Координатор запускает только блоки с готовыми входами. Объединяющий блок ожидает все входы, включая сигнал о неактивном маршруте. Несколько получателей также могут подготавливаться параллельно. Если внешние действия требуют строгой последовательности, задайте её связью от выхода результата предыдущего получателя.
Параметр GRAPH_PARALLELISM по умолчанию равен 4. Это верхняя граница одновременных работ графа, а не обещание четырёхкратного ускорения. Реальный эффект зависит от внешнего API, объёма памяти и формы графа.
Подготовка, снимок и запись
Один этап выполнения: две независимые ветви подготавливаются параллельно. Если последующим блокам нужен результат записи, движок продолжает граф после записи этого этапа. Общей транзакции между внешними системами нет.
- Источники читаются и преобразуются.
- Каждый получатель проверяет схемы, координаты и ключи и подготавливает неизменяемый набор операций.
- Проверяются конфликты получателей, работающих с одним объектом.
- Перед порциями записи повторно проверяются права, лицензия и актуальность ревизий.
- Сохраняется количество подтверждённых и неподтверждённых операций.
Ограничения ресурсов
| Лимит | Значение по умолчанию | Влияние на пользователя |
|---|---|---|
| Ячейки таблицы | 2 000 000 | Чрезмерно широкий или большой результат блока отклоняется. |
| Объём снимка графа | 512 МиБ | Результаты просмотра не могут бесконтрольно заполнять хранилище. |
| Граф | До 256 узлов и 512 связей | Разделяйте слишком большие процессы на управляемые потоки. |
| Интерактивное ожидание | 12 часов | Шаг ввода данных не ждёт пользователя бесконечно. |
Повышение производительности
- Ограничивайте диапазоны, списки колонок и число строк как можно ближе к источнику.
- Отбирайте нужные записи до ресурсоёмких соединений и группировок.
- Проверяйте уникальность ключей Join, чтобы избежать неожиданного размножения строк.
- Согласуйте размеры порций записи с возможностями получателя.
- По журналу отдельно измеряйте чтение, преобразование и запись; не распространяйте результаты одного набора данных на все сценарии.
Параллельные запуски и порядок записи
У потока может быть несколько одновременных запусков. Стандартный лимит параллельности одного потока — 4; число рабочих потоков исполнителя настраивается отдельно. Записи в одинаковые ячейки, ключи таблицы или файл упорядочиваются, а независимые объекты могут записываться параллельно. Очистка куба резервирует объект целиком. «Ожидание очереди записи…» означает, что должна завершиться более ранняя конфликтующая запись.