Преобразование классов ресурсов в группы рабочей нагрузки

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

Примечание.

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

Сведения о существующей конфигурации класса ресурсов

Группам рабочей нагрузки требуется параметр REQUEST_MIN_RESOURCE_GRANT_PERCENT, который определяет долю общих системных ресурсов, выделяемых для каждого запроса. Выделение ресурсов для классов ресурсов выполняется путем выделения слотов параллелизма. Чтобы определить значение для параметра REQUEST_MIN_RESOURCE_GRANT_PERCENT, используйте динамическое административное представление sys.dm_workload_management_workload_groups_stats. Например, приведенный ниже запрос возвращает значение, которое можно использовать для параметра для REQUEST_MIN_RESOURCE_GRANT_PERCENT создания группы рабочей нагрузки, аналогичной статическойrc40.

SELECT Request_min_resource_grant_percent = Effective_request_min_resource_grant_percent
  FROM sys.dm_workload_management_workload_groups_stats
  WHERE name = 'staticrc40'

Примечание.

Группы рабочей нагрузки распределяют системные ресурсы с учетом их общей доли.

При этом при увеличении или уменьшении масштаба изменяется доля выделяемых ресурсов для статических классов ресурсов относительно общего доступного объема. Например, класс staticrc40 на оборудовании DW1000c выделяет 19,2 % от общего объема системных ресурсов. На оборудовании DW2000c он же выделяет 9,6 %. Эта ситуация аналогично сценарию, когда вы хотите выполнить вертикальное масштабирование для обеспечения параллелизма в сравнении с выделением большего объема ресурсов на каждый запрос.

Создание группы рабочей нагрузки

Зная REQUEST_MIN_RESOURCE_GRANT_PERCENT, вы можете создать группу рабочей нагрузки с помощью синтаксиса CREATE WORKLOAD GROUP. При желании можно указать для MIN_PERCENTAGE_RESOURCE значение больше нуля, чтобы изолировать ресурсы для группы рабочей нагрузки. Также можно указать для CAP_PERCENTAGE_RESOURCE значение меньше 100, чтобы ограничить объем ресурсов, потребляемый группой рабочей нагрузки.

В приведенном ниже коде, основанном на примере mediumrc, для MIN_PERCENTAGE_RESOURCE задается значение, выделяющее 10 % системных ресурсов для wgDataLoads и гарантирующее, что в любой момент будет возможность выполнить один запрос. Кроме того, для CAP_PERCENTAGE_RESOURCE задается значение 40 %, что устанавливает для этой группы рабочей нагрузки ограничение в четыре одновременных запроса. Если задать для параметра QUERY_EXECUTION_TIMEOUT_SEC значение 3600, все выполняемые более одного часа запросы будут автоматически отменяться.

CREATE WORKLOAD GROUP wgDataLoads WITH  
( REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10
 ,MIN_PERCENTAGE_RESOURCE = 10
 ,CAP_PERCENTAGE_RESOURCE = 40
 ,QUERY_EXECUTION_TIMEOUT_SEC = 3600)

Создание классификатора

Ранее сопоставление запросов с классами ресурсов выполнялось с помощью sp_addrolemember. Чтобы обеспечить те же функциональные возможности и сопоставить запросы с группами рабочей нагрузки, используйте синтаксис CREATE WORKLOAD CLASSIFIER. Использование sp_addrolemember позволяло сопоставлять ресурсы с запросами только на основе имени входа. Помимо имени входа, классификатор предлагает и другие параметры, например метку времени сеанса. В приведенном ниже примере назначаются запросы от пользователя с именем входа AdfLogin, для которых для параметра OPTION LABEL также установлено значение factloads для группы рабочей нагрузки wgDataLoads, созданной выше.

CREATE WORKLOAD CLASSIFIER wcDataLoads WITH  
( WORKLOAD_GROUP = 'wgDataLoads'
 ,MEMBERNAME = 'AdfLogin'
 ,WLM_LABEL = 'factloads')

Тестирование с использованием примера запроса

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

SELECT SUSER_SNAME() --should be 'AdfLogin'

--change to a valid table AdfLogin has access to
SELECT TOP 10 *
  FROM nation
  OPTION (label='factloads')

SELECT request_id, [label], classifier_name, group_name, command
  FROM sys.dm_pdw_exec_requests
  WHERE [label] = 'factloads'
  ORDER BY submit_time DESC

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