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


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

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

Примечание.

Дополнительные сведения об использовании групп рабочих нагрузок и классов ресурсов см. в разделе "Смешивание назначений классов ресурсов с классификаторами " в документе концепции классификации рабочих нагрузок .

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

Для групп рабочей нагрузки требуется параметр, который REQUEST_MIN_RESOURCE_GRANT_PERCENT определяет процент общих системных ресурсов, выделенных для каждого запроса. Выделение ресурсов выполняется для классов ресурсов путем выделения слотов параллелизма. Чтобы определить значение для параметра REQUEST_MIN_RESOURCE_GRANT_PERCENT, используйте sys.dm_workload_management_workload_groups_stats DMV. Например, приведенный ниже запрос возвращает значение, которое можно использовать для параметра 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, вы автоматически отмените любой запрос, который выполняется более 1 часа.

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')

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

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

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

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