Помощник по распространению в Azure Synapse SQL

Применяется к выделенным пулам SQL Azure Synapse Analytics (ранее SQL DW)

В Azure Synapse SQL каждая таблица распределяется с помощью стратегии, выбранной клиентом (Циклический перебор, Хэш-распределение, Репликация). Выбранная стратегия распределения может существенно повлиять на производительность запросов.

Функция помощника по распространению (DA) Azure Synapse SQL анализирует клиентские запросы и рекомендует лучшие стратегии распределения для таблиц для повышения производительности запросов. Запросы, которые будут рассматриваться консультантом, могут предоставляться клиентом или извлекаться из исторических запросов, доступных в динамическом административном представлении.

Примечание.

Помощник по распространению в настоящее время доступен в предварительной версии для Azure Synapse Analytics. Предварительные версии функций предназначены только для тестирования и не должны использоваться в рабочих экземплярах или для рабочих данных. Поскольку Помощник по распространению доступен в предварительной версии, в него могут вноситься изменения поведения или функциональности. Кроме того, сохраните копию тестовых данных, если эти данные важны. Помощник по распределению не поддерживает распределенные таблицы с несколькими столбцами.

Необходимые компоненты

  • Выполните инструкцию T-SQL SELECT @@version, чтобы убедиться, что версия выделенного пула SQL Azure Synapse Analytics — 10.0.15669 или более поздняя. Если ваша версия ниже, новая версия должна автоматически связаться с подготовленными выделенными пулами SQL во время их цикла обслуживания.

  • Перед запуском помощника убедитесь, что статистика доступна и обновлена. Дополнительные сведения см. в статьях Управление статистикой таблиц, СОЗДАНИЕ СТАТИСТИКИ и ОБНОВЛЕНИЕ СТАТИСТИКИ.

  • Включите помощник по распространению Azure Synapse для текущего сеанса с помощью команды SET RECOMMENDATIONS T-SQL.

Анализ рабочей нагрузки и создание рекомендаций по распределению

В следующем руководстве описывается пример варианта использования функции Помощника по распространению для анализа запросов клиентов и рекомендации оптимальных стратегий распространения.

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

1. Создание хранимых процедур Помощника по распространению

Чтобы легко запустить помощник, создайте две новые хранимые процедуры в базе данных. Запустите скрипт CreateDistributionAdvisor_PublicPreview, доступный для скачивания с GitHub:

Команда Description
dbo.write_dist_recommendation Определяет запросы, которые Помощник по распределению будет анализировать. Вы можете вручную предоставить запросы или прочитать до 100 прошлых запросов из фактических рабочих нагрузок в sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Запускает помощника и создает рекомендации.

Ниже приведен пример запуска помощника.

2a. Запуск помощника по предыдущей рабочей нагрузке в динамическом административном представлении

Выполните следующие команды, чтобы прочитать до последних 100 запросов в рабочей нагрузке для анализа и рекомендаций по распределению:

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Чтобы узнать, какие запросы были проанализированы Помощником по распределению, запустите скрипт e2e_queries_used_for_recommendations.sql, доступный для скачивания с сайта GitHub.

2b. Запуск помощника по выбранным запросам

Первый параметр в dbo.write_dist_recommendation должен иметь значение 0, а второй — это разделенный точкой с запятой список до 100 запросов, которые будут анализироваться Помощником по распределению. В приведенном ниже примере мы хотим увидеть рекомендацию по распределению для двух операторов, разделенных точкой с запятой, — select count (*) from t1;и select * from t1 join t2 on t1.a1 = t2.a1;.

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Просмотр рекомендаций

При завершении выполнения системная хранимая процедура dbo.read_dist_recommendation вернет рекомендации в следующем формате:

Имя столбца Description
Имя таблицы Таблица, проанализированная Помощником по распределению. Одна строка на таблицу независимо от изменений в рекомендации.
Current_Distribution Текущая стратегия распределения таблиц.
Recommended_Distribution Рекомендуемое распределение. Это может быть аналогично Current_Distribution, если рекомендуемое изменение отсутствует.
Distribution_Change_Command Команда CTAS T-SQL для реализации рекомендации.

4. Реализация рекомендаций

  • Выполните команду CTAS, предоставленную Помощником по распространению, чтобы создать новые таблицы с рекомендуемой стратегией распространения.
  • Измените запросы для выполнения в новых таблицах.
  • Выполните запросы к старым и новым таблицам для сравнения в целях повышения производительности.

Примечание.

Чтобы помочь нам улучшить Помощник по распространению, заполните этот краткий опрос.

Устранение неполадок

В этом разделе содержатся распространенные сценарии устранения неполадок и распространенные ошибки, которые могут возникнуть.

1. Устаревшее состояние из предыдущего запуска помощника

1a. Симптом.

Вы увидите это сообщение об ошибке при запуске помощника:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Устранение.
  • Убедитесь, что вы используете одинарные кавычки '' для запуска помощника по выбору запросов.
  • Начните новый сеанс в SSMS и запустите помощник.

2. Ошибки во время работы помощника

2a. Симптом.

Панель "Результат" показывает CommandToInvokeAdvisorString ниже, но не показывает RecommendationOutput.

Например, вы видите только набор результатов Command_to_Invoke_Distribution_Advisor.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

При этом вы не видите второй набор результатов, содержащий команды T-SQL для изменения таблицы:

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Устранение.
  • Проверьте выходные данные CommandToInvokeAdvisorString выше.

  • Удалите запросы, которые могут стать недопустимыми и которые могли быть добавлены сюда из выбранных вручную запросов или из динамического административного представления путем редактирования WHERE предложения: запросы, рассмотренные Помощником по распределению.

3. Ошибка во время последующей обработки выходных данных рекомендаций

3а. Симптом.

Отображается следующее сообщение об ошибке.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3б. Устранение.

Убедитесь, что у вас установлена самая актуальная версия хранимой процедуры из GitHub:

Отзывы по группе продуктов Azure Synapse

Чтобы помочь нам улучшить Помощник по распространению, заполните этот краткий опрос.

Если вам нужна информация, которой нет в этой статье, выполните поиск на странице часто задаваемых вопросов по Azure Synapse на сайте Майкрософт, где можно задать вопросы другим пользователям, и в группе продукта Azure Synapse Analytics.

Мы регулярно просматриваем этот форум и следим за тем, чтобы другие пользователи или наши специалисты ответили на интересующие вас вопросы. Кроме того, вопросы можно задавать на форуме Stack Overflow в разделе, посвященном Azure Synapse Analytics.

Запросы функций можно подать на странице Обратная связь по Azure Synapse Analytics. Добавление запросов или голосование за другие запросы помогает нам сосредоточить усилия на работе над наиболее востребованными функциями.

Следующие шаги