SP работает очень медленно в Azure DW даже с таблицами с распределением HASH по уникальному столбцу
У меня есть хранимая процедура в AZURE DW, которая работает очень медленно. Я скопировал все таблицы и SP на другой сервер, и там это занимает очень мало времени для выполнения. Я создал таблицы, используя распределение HASH в уникальном поле, но также sp работает очень медленно. Посоветуйте, пожалуйста, как мне улучшить производительность sp в AZURE DW.
1 ответ
Из вашего последнего комментария образец данных слишком мал для любых разумных тестов на SQL DW. Помните, что SQL DW - это MPP, а локальный локальный SQL Server - SMP. Даже с DWU100 базовая схема этой архитектуры MPP сильно отличается от вашего локального SQL Server. Например, каждый SQL DW имеет 60 пользовательских баз данных, которые обеспечивают работу DW, и данные распределяются по ним. Хранилище по умолчанию - хранилище кластерных столбцов, оптимизированное для распространенных рабочих нагрузок типа DW.
Когда запрос отправляется в DW, он должен создать план распределенного запроса, который передается в базовые БД для создания локального плана, затем выполняется и запускает его обратно в стек. Это кажется много, и это для небольших наборов данных и простых запросов. Однако, когда вы имеете дело с сотнями ТБ данных с миллиардами строк, и вам необходимо выполнить сложные агрегации, эти дополнительные издержки относительно невелики. Преимущества, которые вы получаете от вычислительной мощности MPP, делают это несущественным.
Нет точных цифр в реальном размере, где вы увидите реальный выигрыш, но по крайней мере половина ТБ является хорошей отправной точкой, и количество строк действительно должно составлять десятки миллионов. Конечно, всегда есть крайние случаи, когда ваш набор данных может быть не очень большим, но рабочая нагрузка естественным образом поддается MPP, так что вы все равно можете увидеть выгоды, но это не часто. Если ваш размер данных находится в диапазоне десятков или сотен ГБ и не будет значительно расти, вы, вероятно, будете намного счастливее с базой данных SQL Azure.
Что касается управления классами ресурсов, мониторинга рабочей нагрузки и т. Д., Проверьте следующие ссылки: