Широковещательное соединение

В настоящее время регулярные соединения выполняются на одном узле кластера. Широковещательное соединение — это стратегия выполнения соединения, которая распределяет соединение по узлам кластера. Эта стратегия полезна, если левая часть соединения небольшая (до нескольких десятков МБ). В этом случае широковещательное соединение является более производительным, чем обычное соединение.

Используйте оператор поиска , если правая сторона меньше левой. Оператор поиска по умолчанию выполняется в широковещательной стратегии, если правая сторона меньше левой.

Примечание

Если левая часть соединения превышает несколько десятков МБ, запрос завершится ошибкой.

Чтобы оценить размер левой части в байтах, можно выполнить следующий запрос:

leftSide
| summarize sum(estimate_data_size(*))

Если слева от соединения находится небольшой набор данных, вы можете запустить соединение в широковещательном режиме, используя следующий синтаксис (hint.strategy = broadcast):

leftSide 
| join hint.strategy = broadcast (factTable) on key

Повышение производительности более заметно в сценариях, где за соединением следуют другие операторы, такие как summarize. Пример см. в следующем запросе:

leftSide 
| join hint.strategy = broadcast (factTable) on Key
| summarize dcount(Messages) by Timestamp, Key