ALTER WORKLOAD GROUP (Transact-SQL)

Выбор продукта

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

* SQL Server *  

 

SQL Server и Управляемый экземпляр SQL

Изменяет существующую конфигурацию группы рабочей нагрузки Resource Governor и при необходимости назначает ее пулу ресурсов Resource Governor.

Примечание.

Для Управляемый экземпляр SQL Azure необходимо находиться в контексте базы данных для изменения конфигурации регулятора master ресурсов.

Соглашения о синтаксисе Transact-SQL.

Синтаксис

ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
    ([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
      [ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
      [ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
      [ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
      [ [ , ] MAX_DOP = value ]
      [ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]

Аргументы

group_name | "default"

Имя существующей, определяемой пользователем или заданной по умолчанию группы рабочей нагрузки регулятора ресурсов. При установке SQL Server Resource Governor создает внутренние группы и группы "по умолчанию".

Параметр default должен заключаться в кавычки ("") или квадратные скобки ([]), если используется с ALTER WORKLOAD GROUP, чтобы избежать конфликта с системным зарезервированным словом DEFAULT. Дополнительные сведения см. в разделе Идентификаторы баз данных.

В стандартных группах рабочей нагрузки и пулах ресурсов используются имена со строчными буквами, такие как «default». Это необходимо учитывать при работе с серверами, где параметры сортировки учитывают регистр символов. Серверы с параметрами сортировки без учета регистра, такие как SQL_Latin1_General_CP1_CI_AS, будут одинаково обрабатывать "default" и "Default".

IMPORTANCE = { LOW | MEDIUM | HIGH }

Указывает относительную важность запроса в группе рабочей нагрузки. Важность принимает одно из следующих значений:

  • Низкое
  • MEDIUM (по умолчанию);
  • ВЫСОКИЙ УРОВЕНЬ

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

Значение IMPORTANCE локально для пула ресурсов; группы рабочей нагрузки разной важности внутри одного пула ресурсов влияют друг на друга, но не влияют на рабочие группы в других пулов ресурсов.

REQUEST_MAX_MEMORY_GRANT_PERCENT = value

Указывает максимальное количество памяти, которое может понадобиться одному запросу из пула. value — это процентное соотношение относительно размера пула ресурсов, указанное в MAX_MEMORY_PERCENT. По умолчанию используется значение 25. Указанное значение ссылается только на доступную для выполнения запроса память.

value — это целое число до SQL Server 2017 (14.x), допустимый диапазон — от 1 до 100. Начиная с версии SQL Server 2019 (15.x) значением является тип данных float; допустимый диапазон — от 0 до 100.

Важно!

Установка параметра value в значение 0 блокирует выполнение запросов с операциями SORT и HASH JOIN в определяемых пользователем группах рабочей нагрузки.

Не рекомендуется устанавливать значение value более 70, так как возможно, что серверу не удастся зарезервировать достаточно памяти, если выполняются другие параллельные запросы. Со временем это может привести к ошибке 8645 (истечение времени ожидания запроса).

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

  • Для определяемых пользователем групп рабочей нагрузки сервер пытается снизить степень параллелизма для запроса, пока требования к памяти не снизятся до ограничения, либо пока степень параллелизма не станет равной 1. Если в этом случае требования к запросам памяти по-прежнему превышают ограничение, возникает ошибка 8657.
  • Для внутренних групп рабочей нагрузки и группы по умолчанию сервер разрешает запросу получить необходимый объем памяти.

В обоих случаях может возникнуть ошибка 8645 (истечение времени ожидания), если на сервере недостаточно физической памяти.

REQUEST_MAX_CPU_TIME_SEC = value

Указывает максимальное количество времени ЦП в секундах, которое может использоваться запросом. value должно быть 0 или положительным целым числом. Значение value по умолчанию равно 0, что означает неограниченное время. По умолчанию по истечении лимита времени Resource Governor не прекращает выполнение запроса. Однако будет сформировано событие. Дополнительные сведения см. в разделе Класс событий CPU Threshold Exceeded.

Начиная с версии SQL Server 2016 (13.x) с пакетом обновления SP2 и версии SQL Server 2017 (14.x) с накопительным пакетом обновления 3 и в случае использования флага трассировки 2422 при превышении максимально заданного времени Resource Governor прервет запрос.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value

Задает максимальное время (в секундах), которое запрос может ожидать предоставления памяти (памяти рабочего буфера).

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

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

MAX_DOP = value

Указывает максимальную степень параллелизма (DOP) для параллельных запросов. Значение value должно быть равно 0 или положительному целому числу в диапазоне от 1 до 255. Если значение value равно 0, то сервер выбирает максимальную степень параллелизма. Это значение по умолчанию, которое рекомендуется использовать.

Фактическое значение, задаваемое ядром СУБД для MAX_DOP может быть меньше указанного значения. Конечное значение определяется по формуле min(255, количество ЦП).

Внимание

Изменение MAX_DOP может неблагоприятно сказаться на производительности сервера. Если необходимо изменить MAX_DOP, то рекомендуется задать для него значение, меньшее или равное максимальному количеству планировщиков оборудования, имеющихся на одном узле NUMA. Рекомендуется не устанавливать для MAX_DOP значение больше 8.

MAX_DOP обрабатывается следующим образом.

  • Использование MAX_DOP в качестве указания запроса эффективно до тех пор, пока его значение не превышает значения MAX_DOP группы рабочей нагрузки.

  • MAX_DOP в качестве указания запроса всегда переопределяет вызов хранимой процедуры sp_configure 'max degree of parallelism'.

  • Группа рабочей нагрузки MAX_DOP переопределяет вызов хранимой процедуры sp_configure 'max degree of parallelism'.

  • Если запрос помечен как последовательный (MAX_DOP = 1) на стадии компиляции, нельзя изменить его статус на параллельный во время выполнения, независимо от параметров группы рабочей нагрузки или хранимой процедуры sp_configure.

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

GROUP_MAX_REQUESTS = value

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

USING { pool_name | "default" }

Связывает группу рабочей нагрузки с определяемым пользователем пулом ресурсов, идентифицируемым по значению pool_name, в результате чего группа рабочей нагрузки помещается в пул ресурсов. Если значение pool_name не предоставлено либо если не использован аргумент USING, группа рабочей нагрузки помещается в стандартный пул по умолчанию регулятора ресурсов.

Аргумент default чувствителен к регистру и должен заключаться в кавычки ("") или квадратные скобки ([]), когда он используется в сочетании с ALTER WORKLOAD GROUP, чтобы избежать конфликта с системным зарезервированным словом DEFAULT. Дополнительные сведения см. в разделе Идентификаторы баз данных.

Замечания

Инструкция ALTER WORKLOAD GROUP разрешена для группы по умолчанию.

Изменения в конфигурации группы рабочей нагрузки не вступают в силу до момента выполнения инструкции ALTER RESOURCE GOVERNOR RECONFIGURE. При изменении параметра, влияющего на план, новый параметр вступит в силу для ранее кэшированных планах только после выполнения инструкции DBCC FREEPROCCACHE (*pool_name*), где pool_name обозначает имя пула ресурсов Resource Governor, с которым связана эта группа рабочей нагрузки.

  • Если значение MAX_DOP изменяется на 1, необязательно выполнять инструкцию DBCC FREEPROCCACHE, так как параллельные планы могут выполняться в последовательном режиме. Однако это будет не так эффективно, как компилирование последовательного плана.

  • Если значение MAX_DOP изменяется с 1 на 0 или на значение больше 1, выполнение инструкции DBCC FREEPROCCACHE не требуется. Однако последовательные планы не могут выполняться параллельно, поэтому очистка соответствующего кэша позволит новым планам потенциально компилироваться с помощью параллелизма.

Внимание

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

При выполнении инструкций DDL рекомендуется иметь представление о состояниях Resource Governor. Дополнительные сведения см. в разделе Resource Governor (Регулятор ресурсов).

REQUEST_MEMORY_GRANT_PERCENT: в SQL Server 2005 (9.x) при создании индексов разрешено использовать больший объем памяти рабочего пространства, чем было предоставлено изначально, в целях повышения быстродействия. Эта специальная обработка поддерживается регулятором ресурсов в более поздних версиях, однако изначально предоставленная память и любая дополнительная выделенная память ограничены настройками группы рабочей нагрузки и пула ресурсов.

Создание индексов для секционированной таблицы

Объем памяти, затрачиваемой на создание индекса в невыровненной секционированной таблице, пропорционален количеству секций, охватываемых индексом. Если общий объем необходимой памяти превышает предел на запрос (REQUEST_MAX_MEMORY_GRANT_PERCENT), устанавливаемый Resource Governor для группы рабочей нагрузки, создание такого индекса может завершиться ошибкой. Для обеспечения совместимости с версией SQL Server 2005 (9.x) группа рабочей нагрузки по умолчанию позволяет запросу превысить лимит для каждого запроса с учетом минимального объема памяти, необходимого при запуске, поэтому пользователь может запустить тот же процесс создания индекса в группе рабочей нагрузки по умолчанию, если в пуле ресурсов по умолчанию достаточно памяти, настроенной для выполнения такого запроса.

Разрешения

Требуется разрешение CONTROL SERVER.

Примеры

В следующем примере демонстрируется, как изменить важность запросов в группе по умолчанию с MEDIUM на LOW.

ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

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

ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

См. также

* Управляемый экземпляр SQL *  

 

SQL Server и Управляемый экземпляр SQL

Изменяет существующую конфигурацию группы рабочей нагрузки Resource Governor и при необходимости назначает ее пулу ресурсов Resource Governor.

Примечание.

Для Управляемый экземпляр SQL Azure необходимо находиться в контексте базы данных для изменения конфигурации регулятора master ресурсов.

Соглашения о синтаксисе Transact-SQL.

Синтаксис

ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
    ([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
      [ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
      [ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
      [ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
      [ [ , ] MAX_DOP = value ]
      [ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]

Аргументы

group_name | "default"

Имя существующей, определяемой пользователем или заданной по умолчанию группы рабочей нагрузки регулятора ресурсов. При установке SQL Server Resource Governor создает внутренние группы и группы "по умолчанию".

Параметр default должен заключаться в кавычки ("") или квадратные скобки ([]), если используется с ALTER WORKLOAD GROUP, чтобы избежать конфликта с системным зарезервированным словом DEFAULT. Дополнительные сведения см. в разделе Идентификаторы баз данных.

В стандартных группах рабочей нагрузки и пулах ресурсов используются имена со строчными буквами, такие как «default». Это необходимо учитывать при работе с серверами, где параметры сортировки учитывают регистр символов. Серверы с параметрами сортировки без учета регистра, такие как SQL_Latin1_General_CP1_CI_AS, будут одинаково обрабатывать "default" и "Default".

IMPORTANCE = { LOW | MEDIUM | HIGH }

Указывает относительную важность запроса в группе рабочей нагрузки. Важность принимает одно из следующих значений:

  • Низкое
  • MEDIUM (по умолчанию);
  • ВЫСОКИЙ УРОВЕНЬ

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

Значение IMPORTANCE локально для пула ресурсов; группы рабочей нагрузки разной важности внутри одного пула ресурсов влияют друг на друга, но не влияют на рабочие группы в других пулов ресурсов.

REQUEST_MAX_MEMORY_GRANT_PERCENT = value

Указывает максимальное количество памяти, которое может понадобиться одному запросу из пула. value — это процентное соотношение относительно размера пула ресурсов, указанное в MAX_MEMORY_PERCENT. По умолчанию используется значение 25. Указанное значение ссылается только на доступную для выполнения запроса память.

value — это целое число до SQL Server 2017 (14.x), допустимый диапазон — от 1 до 100. Начиная с версии SQL Server 2019 (15.x) значением является тип данных float; допустимый диапазон — от 0 до 100.

Важно!

Установка параметра value в значение 0 блокирует выполнение запросов с операциями SORT и HASH JOIN в определяемых пользователем группах рабочей нагрузки.

Не рекомендуется устанавливать значение value более 70, так как возможно, что серверу не удастся зарезервировать достаточно памяти, если выполняются другие параллельные запросы. Со временем это может привести к ошибке 8645 (истечение времени ожидания запроса).

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

  • Для определяемых пользователем групп рабочей нагрузки сервер пытается снизить степень параллелизма для запроса, пока требования к памяти не снизятся до ограничения, либо пока степень параллелизма не станет равной 1. Если в этом случае требования к запросам памяти по-прежнему превышают ограничение, возникает ошибка 8657.
  • Для внутренних групп рабочей нагрузки и группы по умолчанию сервер разрешает запросу получить необходимый объем памяти.

В обоих случаях может возникнуть ошибка 8645 (истечение времени ожидания), если на сервере недостаточно физической памяти.

REQUEST_MAX_CPU_TIME_SEC = value

Указывает максимальное количество времени ЦП в секундах, которое может использоваться запросом. value должно быть 0 или положительным целым числом. Значение value по умолчанию равно 0, что означает неограниченное время. По умолчанию по истечении лимита времени Resource Governor не прекращает выполнение запроса. Однако будет сформировано событие. Дополнительные сведения см. в разделе Класс событий CPU Threshold Exceeded.

Начиная с версии SQL Server 2016 (13.x) с пакетом обновления SP2 и версии SQL Server 2017 (14.x) с накопительным пакетом обновления 3 и в случае использования флага трассировки 2422 при превышении максимально заданного времени Resource Governor прервет запрос.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value

Задает максимальное время (в секундах), которое запрос может ожидать предоставления памяти (памяти рабочего буфера).

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

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

MAX_DOP = value

Указывает максимальную степень параллелизма (DOP) для параллельных запросов. Значение value должно быть равно 0 или положительному целому числу в диапазоне от 1 до 255. Если значение value равно 0, то сервер выбирает максимальную степень параллелизма. Это значение по умолчанию, которое рекомендуется использовать.

Фактическое значение, задаваемое ядром СУБД для MAX_DOP может быть меньше указанного значения. Конечное значение определяется по формуле min(255, количество ЦП).

Внимание

Изменение MAX_DOP может неблагоприятно сказаться на производительности сервера. Если необходимо изменить MAX_DOP, то рекомендуется задать для него значение, меньшее или равное максимальному количеству планировщиков оборудования, имеющихся на одном узле NUMA. Рекомендуется не устанавливать для MAX_DOP значение больше 8.

MAX_DOP обрабатывается следующим образом.

  • Использование MAX_DOP в качестве указания запроса эффективно до тех пор, пока его значение не превышает значения MAX_DOP группы рабочей нагрузки.

  • MAX_DOP в качестве указания запроса всегда переопределяет вызов хранимой процедуры sp_configure 'max degree of parallelism'.

  • Группа рабочей нагрузки MAX_DOP переопределяет вызов хранимой процедуры sp_configure 'max degree of parallelism'.

  • Если запрос помечен как последовательный (MAX_DOP = 1) на стадии компиляции, нельзя изменить его статус на параллельный во время выполнения, независимо от параметров группы рабочей нагрузки или хранимой процедуры sp_configure.

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

GROUP_MAX_REQUESTS = value

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

USING { pool_name | "default" }

Связывает группу рабочей нагрузки с определяемым пользователем пулом ресурсов, идентифицируемым по значению pool_name, в результате чего группа рабочей нагрузки помещается в пул ресурсов. Если значение pool_name не предоставлено либо если не использован аргумент USING, группа рабочей нагрузки помещается в стандартный пул по умолчанию регулятора ресурсов.

Аргумент default чувствителен к регистру и должен заключаться в кавычки ("") или квадратные скобки ([]), когда он используется в сочетании с ALTER WORKLOAD GROUP, чтобы избежать конфликта с системным зарезервированным словом DEFAULT. Дополнительные сведения см. в разделе Идентификаторы баз данных.

Замечания

Инструкция ALTER WORKLOAD GROUP разрешена для группы по умолчанию.

Изменения в конфигурации группы рабочей нагрузки не вступают в силу до момента выполнения инструкции ALTER RESOURCE GOVERNOR RECONFIGURE. При изменении параметра, влияющего на план, новый параметр вступит в силу для ранее кэшированных планах только после выполнения инструкции DBCC FREEPROCCACHE (*pool_name*), где pool_name обозначает имя пула ресурсов Resource Governor, с которым связана эта группа рабочей нагрузки.

  • Если значение MAX_DOP изменяется на 1, необязательно выполнять инструкцию DBCC FREEPROCCACHE, так как параллельные планы могут выполняться в последовательном режиме. Однако это будет не так эффективно, как компилирование последовательного плана.

  • Если значение MAX_DOP изменяется с 1 на 0 или на значение больше 1, выполнение инструкции DBCC FREEPROCCACHE не требуется. Однако последовательные планы не могут выполняться параллельно, поэтому очистка соответствующего кэша позволит новым планам потенциально компилироваться с помощью параллелизма.

Внимание

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

При выполнении инструкций DDL рекомендуется иметь представление о состояниях Resource Governor. Дополнительные сведения см. в разделе Resource Governor (Регулятор ресурсов).

REQUEST_MEMORY_GRANT_PERCENT: в SQL Server 2005 (9.x) при создании индексов разрешено использовать больший объем памяти рабочего пространства, чем было предоставлено изначально, в целях повышения быстродействия. Эта специальная обработка поддерживается регулятором ресурсов в более поздних версиях, однако изначально предоставленная память и любая дополнительная выделенная память ограничены настройками группы рабочей нагрузки и пула ресурсов.

Создание индексов для секционированной таблицы

Объем памяти, затрачиваемой на создание индекса в невыровненной секционированной таблице, пропорционален количеству секций, охватываемых индексом. Если общий объем необходимой памяти превышает предел на запрос (REQUEST_MAX_MEMORY_GRANT_PERCENT), устанавливаемый Resource Governor для группы рабочей нагрузки, создание такого индекса может завершиться ошибкой. Для обеспечения совместимости с версией SQL Server 2005 (9.x) группа рабочей нагрузки по умолчанию позволяет запросу превысить лимит для каждого запроса с учетом минимального объема памяти, необходимого при запуске, поэтому пользователь может запустить тот же процесс создания индекса в группе рабочей нагрузки по умолчанию, если в пуле ресурсов по умолчанию достаточно памяти, настроенной для выполнения такого запроса.

Разрешения

Требуется разрешение CONTROL SERVER.

Примеры

В следующем примере демонстрируется, как изменить важность запросов в группе по умолчанию с MEDIUM на LOW.

ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

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

ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

См. также

* Azure Synapse
Analytics *
 

 

Azure Synapse Analytics

Изменяет существующую группу рабочей нагрузки.

См. ниже раздел "Поведение ALTER WORKLOAD GROUP", чтобы узнать, как ALTER WORKLOAD GROUP работает в системе с выполняющимися и поставленными в очередь запросами.

Те же ограничения, что действуют для CREATE WORKLOAD GROUP, применяются и к ALTER WORKLOAD GROUP. Перед изменением параметров выполните запрос к sys.workload_management_workload_groups, чтобы убедиться, что значения находятся в допустимых диапазонах.

Синтаксис

ALTER WORKLOAD GROUP group_name
WITH
([ MIN_PERCENTAGE_RESOURCE = value ]
  [ [ , ] CAP_PERCENTAGE_RESOURCE = value ]
  [ [ , ] REQUEST_MIN_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }]
  [ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
  [ ; ]

Аргументы

group_name

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

MIN_PERCENTAGE_RESOURCE = value

value является целым числом в диапазоне от 0 до 100. При изменении MIN_PERCENTAGE_RESOURCE сумма значений MIN_PERCENTAGE_RESOURCE во всех группах рабочей нагрузки не может превышать 100. Для изменения MIN_PERCENTAGE_RESOURCE требуется завершить выполнение всех текущих запросов в группе рабочей нагрузки перед выполнением команды. Дополнительные сведения см. в разделе Поведение ALTER WORKLOAD GROUP в этой статье.

CAP_PERCENTAGE_RESOURCE = value

Значение value должно представлять собой целое число в диапазоне от 1 до 100. Значение CAP_PERCENTAGE_RESOURCE не может превышать значение MIN_PERCENTAGE_RESOURCE. Для изменения CAP_PERCENTAGE_RESOURCE требуется завершить выполнение всех текущих запросов в группе рабочей нагрузки перед выполнением команды. Дополнительные сведения см. в разделе Поведение ALTER WORKLOAD GROUP в этой статье.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = value

Значение value должно представлять собой десятичное число в диапазоне от 0,75 до 100,00. Значение REQUEST_MIN_RESOURCE_GRANT_PERCENT должно быть кратно MIN_PERCENTAGE_RESOURCE и меньше, чем CAP_PERCENTAGE_RESOURCE.

REQUEST_MAX_RESOURCE_GRANT_PERCENT = value

Значение value должно представлять собой десятичное число, превышающее значение REQUEST_MIN_RESOURCE_GRANT_PERCENT.

IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }

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

QUERY_EXECUTION_TIMEOUT_SEC = значение

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

Разрешения

Требуется разрешение CONTROL DATABASE.

Пример

В приведенном ниже примере выполняется проверка значений в представлении каталога для группы рабочей нагрузки с именем wgDataLoads и изменение этих значений.

SELECT *
FROM sys.workload_management_workload_groups
WHERE [name] = 'wgDataLoads'

ALTER WORKLOAD GROUP wgDataLoads WITH
( MIN_PERCENTAGE_RESOURCE            = 40
, CAP_PERCENTAGE_RESOURCE            = 80
, REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10 )

Поведение ALTER WORKLOAD GROUP

В любой момент времени в системе имеется три типа запросов:

  • Запросы, которые еще не были классифицированы.
  • Классифицированные запросы, которые ожидают блокировки объектов или системных ресурсов.
  • Классифицированные запросы, которые выполняются.

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

Importance или query_execution_timeout

Для свойств importance и query_execution_timeout неклассифицированные запросы получают новые значения конфигурации. Ожидающие и текущие запросы будут выполняться с прежней конфигурацией. Запрос ALTER WORKLOAD GROUP выполняется сразу вне зависимости от текущих запросов в группе рабочей нагрузки.

REQUEST_MIN_RESOURCE_GRANT_PERCENT или REQUEST_MAX_RESOURCE_GRANT_PERCENT

Для REQUEST_MIN_RESOURCE_GRANT_PERCENT и REQUEST_MAX_RESOURCE_GRANT_PERCENT запросы выполняются с использованием прежней конфигурации. Ожидающие и неклассифицированные запросы получают новые значения конфигурации. Запрос ALTER WORKLOAD GROUP выполняется сразу вне зависимости от текущих запросов в группе рабочей нагрузки.

MIN_PERCENTAGE_RESOURCE или CAP_PERCENTAGE_RESOURCE

Для MIN_PERCENTAGE_RESOURCE или CAP_PERCENTAGE_RESOURCE выполняющиеся запросы используют прежнюю конфигурацию. Ожидающие и неклассифицированные запросы получают новые значения конфигурации.

Для изменения MIN_PERCENTAGE_RESOURCE и CAP_PERCENTAGE_RESOURCE требуется очистка выполняющихся запросов в изменяемой группе рабочей нагрузки. При уменьшении MIN_PERCENTAGE_RESOURCE освобожденные ресурсы возвращаются в общий пул, что позволяет запросам из других групп рабочей нагрузки использовать эти ресурсы. И наоборот, при увеличении MIN_PERCENTAGE_RESOURCE потребуется ожидание, пока выполнятся запросы, использующие только необходимые ресурсы из общего пула. Операция ALTER WORKLOAD GROUP будет иметь приоритетный доступ к общим ресурсам по отношению к другим запросам, ожидающим выполнения в общем пуле. Если сумма значений MIN_PERCENTAGE_RESOURCE превышает 100 %, запрос ALTER WORKLOAD GROUP немедленно завершается ошибкой.

Режим блокировки

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

См. также