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


Управление вычислительными ресурсами для выделенного пула SQL

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

Что такое управление вычислительными ресурсами?

Архитектура выделенного пула SQL разделяет хранилище и вычислительные ресурсы, что позволяет масштабировать их независимо друг от друга. В результате можно масштабировать вычислительные ресурсы в соответствии с потребностями в производительности независимо от хранилища данных. Кроме того, можно приостанавливать и возобновлять работу вычислительных ресурсов.

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

Масштабирование вычислительных ресурсов

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

Инструкции по горизонтальному масштабированию см. в кратких руководствах по портал Azure, PowerShell или T-SQL. Кроме того, можно выполнять операции оптимизации горизонтального масштабирования с помощью REST API.

Чтобы выполнить операцию масштабирования, выделенный пул SQL сначала убивает все входящие запросы, а затем откатывает транзакции, чтобы обеспечить согласованное состояние. Масштабирование происходит только после завершения отката транзакций. Для операции масштабирования система отсоединяет слой хранилища от вычислительных узлов, добавляет вычислительные узлы, а затем повторно присоединяет слой хранилища к вычислительному уровню.

Каждый выделенный пул SQL хранится в виде 60 дистрибутивов, которые равномерно распределяются по вычислительным узлам. Добавление вычислительных узлов увеличивает вычислительную мощность. При увеличении количества вычислительных узлов количество распределений на каждом вычислительном узле уменьшается, что обеспечивает дополнительную вычислительную мощность для обработки запросов. Аналогично, уменьшение DWUs сокращает количество вычислительных узлов, что уменьшает вычислительные ресурсы для запросов.

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

Единицы использования хранилища данных Количество вычислительных узлов Количество распределений на узел
DW100c 1 60
DW200c 1 60
DW300c 1 60
DW400c 1 60
DW500c. 1 60
DW1000c 2 30
DW1500c 3 20
DW2000c 4 15
DW2500c 5 12
DW3000c 6 10
DW5000c 10 6
DW6000c 12 5
DW7500c 15 4
DW10000c 20 3
DW15000c 30 2
DW30000c 60 1

Поиск подходящего размера единиц хранилища данных

Чтобы ознакомиться с преимуществами производительности, обеспечиваемыми горизонтальным масштабированием, особенно для более крупных единиц использования хранилища данных, следует использовать по крайней мере набор данных размером в 1 ТБ. Чтобы найти оптимальное количество DWUs для выделенного SQL-пула, попробуйте масштабировать вверх и вниз. Выполните несколько запросов с разными числами DWUS после загрузки данных. Так как масштабирование выполняется достаточно быстро, попробуйте использовать разные уровни производительности не дольше одного часа.

Рекомендации по поиску оптимального количества DWUs:

  • Для выделенного пула SQL в разработке начните с выбора небольшого количества DWUs. В качестве отправной точки можно использовать DW400c или DW200c.
  • Отслеживайте производительность вашего приложения, наблюдая за тем, как она соотносится с количеством выбранных единиц DWU и с фактической производительностью, которую вы наблюдаете.
  • Предположите линейную шкалу и определите, насколько нужно увеличить или уменьшить DWUs.
  • Вносите изменения, пока не достигнете уровня производительности, который оптимально отвечает вашим бизнес-требованиям.

Когда требуется горизонтальное увеличение масштаба

Масштабирование DWUs влияет на эти аспекты производительности.

  • Линейно повышает производительность системы для сканирования, агрегирования и инструкций CTAS
  • Увеличивает количество средств чтения и записи для загрузки данных
  • Максимальное количество параллельных запросов и слотов параллелизма.

Рекомендации по увеличению масштаба единиц хранилища данных (DWU):

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

Что делать, если масштабирование не улучшает производительность?

Добавление DWUs увеличивает параллелизм. Если работа равномерно разделена между вычислительными узлами, дополнительная параллелизм улучшает производительность запросов. Если масштабирование не изменяет производительность, существуют некоторые причины, по которым это может произойти. Возможно, данные неравномерно распределены между распределениями данных или запросы вызывают значительное перемещение данных. Чтобы изучить проблемы производительности запросов, ознакомьтесь с разделом Устранение неполадок хранилища данных SQL Azure.

Остановка и возобновление вычислений

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

При приостановке выделенного пула SQL:

  • Вычислительные ресурсы и ресурсы памяти возвращаются в пул доступных ресурсов в центре обработки данных.
  • Затраты на единицу хранилища данных равны нулю во время приостановки.
  • Хранилище данных не затрагивается, и данные остаются нетронутыми.
  • Все выполняемые или очередные операции отменяются.
  • Счетчики динамического административного представления сбрасываются.

При восстановлении выделенного SQL пула:

  • Выделенный пул SQL получает вычислительные ресурсы и ресурсы памяти для параметра DWUs.
  • Вычисляется стоимость возобновления DWU.
  • Ваши данные теперь доступны.
  • После подключения выделенного пула SQL необходимо перезапустить запросы рабочей нагрузки.

Если вы всегда хотите, чтобы выделенный пул SQL был доступен, рассмотрите возможность масштабирования до наименьшего размера, а не приостановки.

Для получения инструкций по приостановке и возобновлению работы обратитесь к кратким руководствам на портале Azure или в PowerShell. Можно также использовать REST API приостановки или REST API возобновления.

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

Мы рекомендуем дождаться завершения текущих транзакций, прежде чем начать приостановку или масштабирование.

При приостановке или масштабировании выделенного пула SQL за кулисами запросы отменяются при запуске приостановки или масштабирования запроса. Отмена простого запроса SELECT — быстрая операция и практически не влияет на время приостановки работы или масштабирования экземпляра. Однако запросы транзакций, которые изменяют данные или структуру данных, могут не остановиться быстро. Транзакционные запросы по определению должны полностью завершиться или выполнить откат изменений.

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

Дополнительные сведения см. в разделе "Использование транзакций и оптимизации транзакций".

Автоматизация управления вычислительными ресурсами

Сведения об автоматизации операций управления вычислительными ресурсами см. в статье "Использование Функции Azure для управления вычислительными ресурсами для выделенного пула SQL".

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

Чтобы проверить состояние выделенного пула SQL, ознакомьтесь с краткими руководствами по PowerShell или T-SQL. Вы также можете проверить состояние выделенного пула SQL с помощью REST API.

Разрешения

Масштабирование выделенного пула SQL требует разрешений, описанных в ALTER DATABASE. Приостановка и возобновление требуют роли участника базы данных SQL, в частности Microsoft.Sql/servers/database/action.