Поделиться через


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

Применимо к: Выделенные SQL-пулы Azure Synapse Analytics (ранее — "SQL Data Warehouse")

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

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

Примечание.

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

Предпосылки

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

  • Убедитесь, что статистика доступна и up-to-date перед запуском помощника. Дополнительные сведения см. в статьях "Управление статистикой таблиц", "CREATE STATISTICS" и UPDATE STATISTICS для получения дополнительных сведений о статистике.

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

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

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

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

1. Создать хранимые процедуры для Distribution Advisor

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

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

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

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

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

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

Чтобы узнать, какие запросы были проанализированы DA, запустите скрипт e2e_queries_used_for_recommendations.sql, который можно скачать с GitHub.

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

Первый параметр dbo.write_dist_recommendation должен иметь 0значение , а второй параметр — это разделенный точкой с запятой список до 100 запросов, которые будут анализировать DA. В приведенном ниже примере мы хотим увидеть рекомендацию по распределению для двух утверждений, разделенных точками с запятой: 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 процедура вернет рекомендации в следующем формате при завершении выполнения:

Имя столбца Описание
Имя_таблицы Таблица, которую проанализировал DA. Одна строка на таблицу независимо от изменений в рекомендации.
Текущее_Распределение Текущая стратегия распределения таблиц.
Рекомендуемое_Распределение Рекомендуемое распределение. Это может быть так же, как Current_Distribution если не рекомендуется вносить изменения.
Команда_Изменения_Распределения Команда 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 набор результатов.

Снимок экрана результата T-SQL с командой Command_to_Invoke_Distribution_Advisor.

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

Снимок экрана результата выполнения T-SQL с Command_to_Invoke_Distribution_Advisor, со вторым набором результатов, включающим команды T-SQL для изменения таблицы.

2b. Смягчение:
  • Проверьте результат CommandToInvokeAdvisorString, показанный выше.

  • Удалите запросы, которые могут больше не быть действительными, которые могли быть добавлены сюда из выбранных вручную запросов или из DMV, редактируя WHERE условие в: Запросы, рассмотренные DA.

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

3a. Симптом.

Вы увидите следующее сообщение об ошибке.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Смягчение:

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

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

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

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

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

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

Дальнейшие действия