ALTER WORKLOAD GROUP (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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 регулятор ресурсов создает внутренние группы и группы «по умолчанию».

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

    ПримечаниеПримечание

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

  • IMPORTANCE = { LOW | MEDIUM | HIGH }
    Указывает относительную важность запроса в группе рабочей нагрузки. Важность принимает одно из следующих значений:

    • LOW;

    • MEDIUM (по умолчанию);

    • HIGH.

    ПримечаниеПримечание

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

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

  • REQUEST_MAX_MEMORY_GRANT_PERCENT = value
    Указывает максимальное количество памяти, которое может понадобиться одному запросу из пула. Это процентное соотношение относительно к размеру пула ресурсов, указанного в MAX_MEMORY_PERCENT.

    ПримечаниеПримечание

    Указанное значение ссылается только на доступную для выполнения запроса память.

    Значение value должно быть больше 0 или быть положительным целым числом. Диапазон допустимых значений для value — от 0 до 100. По умолчанию значение value равно 25.

    Следует отметить следующее.

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

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

    ПримечаниеПримечание

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

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

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

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

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

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

    ПримечаниеПримечание

    По истечении лимита времени регулятор ресурсов не прекращает выполнение запроса. Однако будет сформировано событие. Дополнительные сведения см. в разделе Класс событий CPU Threshold Exceeded.

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

    ПримечаниеПримечание

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

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

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

    ПримечаниеПримечание

    Фактическое значение, задаваемое компонентом Database Engine для 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). Дополнительные сведения см. в разделе Идентификаторы с разделителями (компонент Database Engine).

    ПримечаниеПримечание

    В параметре "default" учитывается регистр.

Замечания

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

Изменения конфигурации группы рабочей нагрузки не вступают в силу до тех пор, пока не будет выполнена инструкция ALTER RESOURCE GOVERNOR RECONFIGURE.

При выполнении инструкций DDL рекомендуется знание положений регулятора ресурсов. Дополнительные сведения см. в разделе Состояния регулятора ресурсов.

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

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

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

Разрешения

Требуются разрешения 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