Як виконується потік

Рушій виконує граф залежностей: запускає готові незалежні блоки паралельно, очікує потрібні входи й передає результати наступним крокам. Отримувачі спочатку готують і перевіряють дані; запис запускається окремим етапом. Залежні кроки продовжуються після результату попередньої операції. Паралельність зменшує очікування незалежних дій, але не змінює задану графом послідовність.

Паралельність без зміни залежностей

Координатор запускає лише ті блоки, входи яких готові. Блок об’єднання очікує кожний вхід, включно з повідомленням про неактивний маршрут. Підготовка кількох отримувачів також може йти паралельно. Якщо потрібна сувора послідовність зовнішніх дій, її треба задати зв’язком із виходу результату попереднього отримувача.

Параметр GRAPH_PARALLELISM має базове значення 4. Це верхня межа паралельної роботи графа, а не обіцянка чотириразового прискорення. Зовнішній API, обсяг пам’яті та форма графа визначають фактичний ефект.

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

Пояснювальна схемаЗбільшити ↗Один етап виконання: дві незалежні гілки проходять паралельну підготовку. Якщо наступні блоки залежать від результату запису, рушій продовжує граф після запису цього етапу. Глобальної транзакції між зовнішніми системами немає.
Як рушій готує та записує дані

Один етап виконання: дві незалежні гілки проходять паралельну підготовку. Якщо наступні блоки залежать від результату запису, рушій продовжує граф після запису цього етапу. Глобальної транзакції між зовнішніми системами немає.

  1. Джерела читаються й проходять перетворення.
  2. Кожний отримувач перевіряє схему, координати, ключі та готує незмінний набір операцій.
  3. Перевіряються конфлікти між отримувачами одного об’єкта.
  4. Перед порціями запису повторно перевіряються права, ліцензія та актуальність ревізій.
  5. Зберігаються лічильники підтверджених і непідтверджених операцій.

Обмеження ресурсів

ОбмеженняБазове значенняЗначення для користувача
Комірки таблиці2 000 000Надто широкий або великий результат блоку буде відхилено.
Бюджет знімків графа512 MiBРезультати для перегляду не можуть необмежено заповнювати сховище.
ГрафДо 256 вузлів і 512 реберРозділяйте надмірні процеси на керовані потоки.
Інтерактивне очікування12 годинКрок із запитом користувача не чекає безкінечно.

Як підвищувати швидкодію

  • Обмежуйте діапазон, перелік колонок та кількість рядків якомога ближче до джерела.
  • Фільтруйте зайві записи до важких з’єднань і групувань.
  • Перевіряйте унікальність ключів Join, щоб уникати непередбаченого множення рядків.
  • Узгоджуйте розмір порцій запису з можливостями отримувача.
  • Вимірюйте читання, перетворення та запис окремо за журналом; не переносіть результати одного набору даних на всі сценарії.

Одночасні запуски й черга запису

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