Что такое вычислительные ресурсы для управления узлом в плане запросов Azure SQL DW?

Что именно представляет собой шаг «Вычислить для управления узлом» в плане выполнения запроса Azure SQL DW Query? Означает ли это, что ADW перемещает данные на управляющий узел, а затем выполняет JOIN. Я понимаю операцию Shuffle, которая перераспределяет данные между вычислительными узлами. Но я не понял, в какой ситуации поток данных от узла Compute to Control для JOIN.

Все 3 высокозатратные операции на снимке экрана связаны с перемещением 2 таблиц фактов и самых больших таблиц измерений.

Query_Plan Спасибо


person Dataman    schedule 09.04.2018    source источник
comment
Было ли это простое соединение двух таблиц? Данные могут перемещаться с вычислительных узлов на управляющий узел при выполнении сортировки и агрегирования, но я не думаю, что простой выбор * из запроса типа внутреннего соединения b может вызвать это условие. Расскажите подробнее о таблицах и запросах.   -  person Ron Dunn    schedule 09.04.2018
comment
Это ЛЕВОЕ соединение между несколькими таблицами фактов и связанными с ними измерениями. Обе таблицы фактов распределены по хешу в одном столбце, а также объединены в одном столбце. Но размеры распределяются по циклическому алгоритму, я подумал о репликации размеров, но похоже, что эта функция все еще находится в предварительном просмотре. Я опубликую запрос и снимок экрана с планом в ближайшее время.   -  person Dataman    schedule 09.04.2018
comment
Добавлен план запроса   -  person Dataman    schedule 09.04.2018
comment
Насколько графический план упрощает понимание стоимости запроса, план объяснения XML намного более богат. Если вы посмотрите XML, найдите dsql_operations, где distribution = 'Control'. Следующий узел будет чем-то вроде «PARTITION_MOVE» или «TRIM_MOVE», который сообщит вам точную причину перемещения к управляющему узлу и перемещаемые данные.   -  person Ron Dunn    schedule 10.04.2018
comment
Поделитесь планом объяснения или просмотрите его самостоятельно, чтобы узнать, что это за переезд. Это могут быть просто результаты, отправленные обратно на узел управления для возврата клиенту.   -  person SQLmojoe    schedule 11.04.2018


Ответы (1)


Вы можете отправлять части запроса на управляющий узел в таких операциях, как PartitionMoves. Например, это может произойти, когда вы выполняете GroupBy для столбца, который не является столбцом распределения, и оптимизатор считает, что набор результатов достаточно мал, чтобы отправить его на управляющий узел для окончательного агрегирования.

person hirokibutterfield    schedule 09.04.2018
comment
У меня в запросе нет GroupBy. Это ЛЕВОЕ соединение между несколькими таблицами фактов и связанными с ними измерениями. Обе таблицы фактов распределены по хешу в одном столбце, а также объединены в одном столбце. Но размеры распределяются по циклическому алгоритму, я подумал о репликации размеров, но похоже, что эта функция все еще находится в предварительном просмотре. Я опубликую запрос и снимок экрана с планом в ближайшее время. - person Dataman; 09.04.2018
comment
Если у вас задействовано более двух таблиц, что, как кажется, вы делаете из более позднего упоминания измерений, было бы немного ошибочным думать об этом как об объединении двух таблиц. Скорее воспринимайте это как комплексную стратегию запроса 5 или 6 таблиц в объединении. - person Ron Dunn; 10.04.2018