Единицы использования хранилища данных (DWU) для выделенного пула SQL в Azure Synapse Analytics

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

Что такое единицы использования хранилища данных

Выделенный пул SQL (ранее — Хранилище данных SQL) представляет коллекцию аналитических ресурсов, которые подготавливаются к работе. Аналитические ресурсы определяются как сочетание ЦП, памяти и операций ввода-вывода.

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

Изменяя уровень службы, вы можете изменить число DWU, доступных для системы, что в свою очередь влияет на производительность и стоимость использования системы.

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

Производительность единиц DWU основана на следующих метриках рабочей нагрузки хранилища данных:

  • Насколько быстро стандартным запросом выделенного пула SQL (ранее — Хранилище данных SQL) сканируется большое количество записей и выполняется их сложное агрегирование. Это требует интенсивного использования операций ввода-вывода и ресурсов ЦП.
  • Насколько быстро выделенный пул SQL (ранее — Хранилище данных SQL) может принимать данные из больших двоичных объектов хранилища Azure или Azure Data Lake. Это сетевая операция, которая требует интенсивного использования ресурсов ЦП.
  • Насколько быстро команда T-SQL CREATE TABLE AS SELECT может скопировать таблицу. Эта операция предусматривает чтение данных из хранилища, их распространение в различные узлы устройства и повторную запись в хранилище. Эта операция выполняется ЦП и требует интенсивного использования операций ввода-вывода и сетевых ресурсов.

При увеличении единиц DWU происходит следующее:

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

Целевой уровень обслуживания

Целевой уровень обслуживания (SLO) — это параметр масштабируемости, который определяет уровень затрат и производительности выделенного пула SQL (ранее — Хранилище данных SQL). Уровни обслуживания для выделенного пула SQL 2-го поколения (ранее — Хранилище данных SQL) измеряются в единицах использования хранилища данных (DWU), например DW2000c.

Примечание.

Недавно для выделенного пула SQL 2-го поколения (ранее — Хранилище данных SQL) были расширены возможности масштабирования, и теперь оно поддерживает уровни вычислительных ресурсов, начиная с DW100c. Существующие хранилища данных 1-го поколения, которым необходима поддержка более низких уровней вычислительных ресурсов, можно обновить до 2-го поколения в регионах, где оно сейчас доступно, без дополнительной платы. Если эта возможность пока не доступна для вашего региона, можно обновить хранилище, выполнив геовосстановление в поддерживаемый регион. Дополнительные сведения см. в статье Оптимизация производительности путем обновления хранилища данных SQL.

В T-SQL параметр SERVICE_OBJECTIVE определяет уровень обслуживания и уровень производительности для выделенного пула SQL (ранее — Хранилище данных SQL).

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

Уровни производительности и единицы использования хранилища данных

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

  • Хранилища данных поколения 1 измеряются в единицах использования хранилища данных (DWU).
  • Хранилища данных поколения 2 измеряются в вычислительных единицах использования хранилища данных (cDWU).

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

Ограничения емкости

Для каждого сервера SQL (например, myserver.database.windows.net) предусмотрена квота DTU (единицы передачи данных), которая позволяет применить только определенное число единиц использования хранилища данных. Дополнительные сведения см. в статье об ограничениях емкости для управления рабочей нагрузкой.

Сколько единиц использования хранилища данных требуется

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

Шаги для поиска оптимального количества единиц DWU рабочей нагрузки:

  1. Начните, выбрав меньшее число DWU.
  2. Отслеживайте производительность приложения по мере загрузки тестовых данных в систему, сравнивая ее с количеством выбранных DWU.
  3. Определите любые дополнительные требования для периодов пиковой активности. Для рабочих нагрузок, в которых наблюдаются значительные пики и спады, может потребоваться частое масштабирование.

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

Чтобы ознакомиться с реальными возможностями масштабирования, особенно при использовании большого количества DWU, мы рекомендуем во время масштабирования выполнить масштабирование набора данных, чтобы проверить, достаточно ли используется данных для ЦП. Для проверки масштабирования мы рекомендуем использовать как минимум 1 TБ.

Примечание.

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

Разрешения

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

Встроенные роли Azure, такие как участник базы данных SQL и участник SQL Server, позволяют изменять параметры DWU.

для просмотра текущих параметров DWU;

Чтобы просмотреть текущие параметры DWU, сделайте следующее:

  1. Откройте обозреватель объектов SQL Server в Visual Studio.
  2. Подключитесь к базе данных master, связанной с логическим сервером SQL Server.
  3. Выберите в sys.database_service_objectives динамическое административное представление. Пример:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

Изменение единиц использования хранилища данных

Портал Azure

Чтобы изменить единицы DWU, сделайте следующее:

  1. Откройте портал Azure, затем откройте нужную базу данных и щелкните Масштаб.

  2. В колонке Масштаб передвиньте ползунок влево или вправо, чтобы изменить число единиц DWU.

  3. Нажмите кнопку Сохранить. Отображается сообщение с подтверждением. Щелкните Да для подтверждения или Нет для отмены.

PowerShell

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Чтобы изменить число единиц DWU, используйте командлет PowerShell Set-AzSqlDatabase. В приведенном ниже примере для базы данных MySQLDW, размещенной на сервере MyServer, устанавливается цель уровня обслуживания DW1000.

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

Дополнительные сведения см. в статье Командлеты PowerShell для выделенного пула SQL (ранее — Хранилище данных SQL).

T-SQL

С помощью команды T-SQL можно просмотреть текущие параметры DWU, изменить их и сравнить результат.

Изменение DWU:

  1. Подключитесь к базе данных master, связанной с вашим сервером.
  2. Используйте оператор TSQL ALTER DATABASE. В приведенном ниже примере для базы данных MySQLDW устанавливается целевой уровень обслуживания DW1000c.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

Интерфейсы REST API

Чтобы изменить число DWU, используйте REST API создания или обновления базы данных. В следующем примере цель уровня обслуживания — DW1000c для базы данных MySQLDW, размещенной на сервере MyServer. Сервер находится в группе ресурсов Azure с именем ResourceGroup1.

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": "DW1000c"
    }
}

Дополнительные примеры REST API см. в статье Интерфейсы REST API для выделенного пула SQL (ранее — Хранилище данных SQL).

Проверка состояния изменений единиц DWU

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

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

Вы не можете проверить состояние базы данных для операций масштабирования с помощью портала Azure.

Чтобы проверить состояние изменений DWU, сделайте следующее:

  1. Подключитесь к базе данных master, связанной с вашим сервером.

  2. Отправьте запрос ниже, чтобы проверить состояние базы данных.

    SELECT    *
    FROM      sys.dm_operation_status
    WHERE     resource_type_desc = 'Database'
    AND       major_resource_id = 'MySQLDW'
    ;
    

Это динамическое административное представление возвращает сведения о различных операциях для управления выделенным пулом SQL (ранее — Хранилище данных SQL), например об операции и ее состоянии (IN_PROGRESS или COMPLETED).

Масштабирование рабочего процесса

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

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

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

Дополнительные сведения об управлении производительностью см. в статьях Классы ресурсов для управления рабочими нагрузками и Memory and concurrency limits for Azure SQL Data Warehouse (Ограничения памяти и параллелизма для хранилища данных SQL Azure).