Проблемы с производительностью Azure Datawarehouse

У меня очень простая установка хранилища Azure SQL для тестовых целей DWU100. В нем есть одна таблица с 60 миллионами строк. Запускаю запрос формы:

SELECT 
    SUM(TheValue), GroupId
FROM 
    [dbo].[Fact_TestTable]
GROUP BY
    GroupId

Выполнение этого запроса занимает 5 секунд.

Выполняя тот же запрос в базе данных DTU 250 SQL (эквивалент по цене), я получаю время выполнения в 1 секунду.

Я предполагаю, что должны быть вещи, которые я могу сделать, чтобы ускорить это, может ли кто-нибудь предложить, что я могу сделать, чтобы это улучшить?

Группа по GroupId выше - это просто пример, я не могу предположить, что люди всегда будут группироваться по какому-либо одному конкретному столбцу.


person Slicc    schedule 12.10.2018    source источник


Ответы (1)


исходя из вашего вопроса, непонятно, как спроектирована ваша таблица - вы используете ROUND-ROBIN или HASH-дизайн распределенной таблицы? Если вы не выбрали тип распределения при создании таблицы, таблица по умолчанию будет циклической. Учитывая ваш запрос, выбор структуры распределенной таблицы HASH, вероятно, приведет к сокращению времени выполнения запроса, поскольку этот запрос будет преобразован в запрос типа локально-глобальной агрегации. Трудно прокомментировать, что именно происходит, учитывая, что вы не поделились планом запроса. Ниже приведена ссылка на документацию SQL DW, в которой рассказывается о различных вариантах дизайна таблиц.

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-azure-sql-data-warehouse?view=aps-pdw-2016-au7 < / а>

надеюсь это поможет, игорь

person Igor    schedule 12.10.2018
comment
Ах, извините, я оставил это как круговую систему для начала. Но если бы я выбрал распределение хешей, не означало бы, что я предполагаю, что запросы всегда будут использовать в них GroupId? Это всего лишь тестовый пример, и в реальном случае я не мог сделать никаких предположений о том, какую группу по терминам будут использовать запросы. - person Slicc; 12.10.2018
comment
Привет. Нет, не совсем. Распределение хэшей - вещь неплохая. Это действительно выбор, но в целом выбор хорошего столбца распределения - это шаблон, который мы хотим видеть. Следование чему-то вроде размерной модели с фактами HASH или ROUND-ROBIN и ПОВТОРЯЕМЫМИ измерениями - хороший шаблон проектирования. - person Igor; 12.10.2018