Настраиваемые пулы SQL

Применимо к:✅ Конечная точка аналитики SQL и хранилище в Microsoft Fabric

Это важно

Эта функция доступна в предварительной версии.

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

Схема подсистемы SQL с пользовательскими пулами SQL.

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

По умолчанию границы изоляции — прием (типы операторов, не являющиесяSELECT операторами) и обработка запросов (SELECT операторы). С помощью настраиваемых пулов SQL администраторы могут:

  • Измените количество границ изоляции (добавьте дополнительные настраиваемые пулы SQL).
  • Создайте классификации пользовательских рабочих нагрузок для конкретного приложения.
  • Управление выделением ресурсов каждого пула с помощью максимального процента ресурсов.

Варианты использования настраиваемых пулов SQL

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

Конкурирующие рабочие нагрузки с автономными пулами рабочих нагрузок

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

Пример сценария

  • Рабочая нагрузка корпоративной отчетности выполняется неоптимально при выполнении ad hoc запросов пользователей в редакторе SQL-запросов на портале Fabric.

Рекомендуемый подход

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

Регулирование емкости из-за высокого потребления

Этот сценарий применяется, когда потребление емкости Fabric приводит к регулированию, влияющему на общую производительность хранилища.

Пример сценария

Рекомендуемый подход

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

Различия между управлением автономными рабочими нагрузками и настраиваемыми пулами SQL

Тема Управление автономными рабочими нагрузками Настраиваемые пулы SQL
Конфигурация Нет (вне поля) — веб-интерфейс
- API
Разрешения N/A Администратор рабочей области
Объем Рабочая область включает как хранилище данных, так и конечные точки аналитики SQL. Рабочая область включает как хранилище данных, так и конечные точки аналитики SQL.
Метод классификации Тип значения (SELECT или другого) — Имя приложения
— регулярное выражение имени приложения
Единица измерения N/A Процент серверных узлов в общем объеме
Пулы SQL SELECT или другое Определяемое пользователем выделение
Эластичная пропускная способность Управление осуществляется Fabric (до 12 раз на пул SQL, 24 раз всего) Пользователь определяется на основе процента выделенных внутренних узлов. Общий объем ресурсов по-прежнему составляет 24x.

Эластичная пропускная способность

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

Классификаторы

Классификатор — это атрибут SQL-запроса, который сообщает системе, как направляться в соответствующий пул SQL.

Хранилище данных Fabric предоставляет три способа классификации запросов:

Тип классификатора Описание Конфигурация
Тип инструкции Классифицирует запросы на SELECT (запрос) или не-SELECT (все инструкции DML, DDL) Только управление автономными рабочими нагрузками
Имя приложения — Приложение (или имя программы), используемое в строке подключения при подключении к хранилищу Fabric или конечной точке SQL Analytics.
— Поддерживает несколько имен приложений для каждого настраиваемого пула SQL
- 128 символов или меньше
— взаимоисключаемые между настраиваемыми пулами SQL
Только пользовательские SQL-пулы
Regex имени приложения — регулярное выражение, используемое для сопоставления значений имени приложения.
— Для регулярного выражения вычисляется только первое значение в списке.
Только пользовательские SQL-пулы

Руководящие принципы:

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

Разрешения

  • Члены роли рабочей области администратора могут включать или отключать настраиваемые пулы SQL для рабочей области.
  • Члены роли рабочей области 'Администратор' могут обновлять настраиваемые конфигурации пула SQL.

Настройка настраиваемых пулов SQL

Настраиваемые пулы SQL можно настроить в хранилище данных Fabric на портале Fabric или через вызовы API.

Монитор

Вы можете увидеть имя приложения и пул SQL, которые были записаны для запроса, в полях program_name и sql_pool_name системного представления queryinsights.exec_requests_history.

Можно использовать program_name в качестве имени приложения в классификаторе или в шаблоне регулярного выражения для классификатора.

Например, чтобы найти все program_name и соответствующие sql_pool_name в недавней истории:

SELECT DISTINCT 
         program_name
        ,sql_pool_name
FROM queryinsights.exec_requests_history;

Вы можете определить, какие пулы SQL находятся под давлением, запрашивая queryinsights.sql_pool_insights представление.

Например, найдите периоды времени, когда пул был под давлением за прошлую неделю.

SELECT [timestamp]
        ,sql_pool_name
        ,max_resource_percentage
        ,is_pool_under_pressure
FROM queryinsights.sql_pool_insights
WHERE is_pool_under_pressure = 1
AND [timestamp] > DATEADD(WEEK, -1, GETDATE())
ORDER BY [timestamp] DESC, sql_pool_name;

Для агрегирования program_name значений по некоторым метрикам затрат запроса можно использовать следующий запрос:

SELECT 
    program_name,
    sql_pool_name,
    [CPU] = SUM(allocated_cpu_time_ms), 
    [Disk] = SUM(data_scanned_disk_mb), 
    [Memory] = SUM(data_scanned_memory_mb), 
    [Remote storage] = SUM(data_scanned_remote_storage_mb)
FROM queryinsights.exec_requests_history
GROUP BY program_name, sql_pool_name
ORDER BY [CPU] desc, [Disk] desc, [Memory] desc, [Remote storage] desc;

Ограничения

  • Перед запуском API рабочая область должна содержать одну или несколько хранилищ или конечных точек аналитики SQL.
  • Вы можете создать до восьми настраиваемых пулов SQL на рабочую область.
  • При удалении настраиваемого пула SQL во время выполнения запроса в пуле запрос завершится ошибкой с сообщением Request to perform an external distributed computation has failed with error "Query canceled by user.". Изменение размера настраиваемого пула SQL не приводит к сбою запроса.

Изменение размера пропускной способности Fabric

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

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

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

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