CREATE WORKLOAD GROUP (Transact-SQL)

Создает группу рабочей нагрузки регулятора ресурсов и связывает ее с пулом ресурсов регулятора ресурсов. Регулятор ресурсов доступен не во всех выпусках Microsoft SQL Server. Список функций, поддерживаемых в разных выпусках SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2014.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL.

Синтаксис

CREATE WORKLOAD GROUP group_name
[ 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
    Определяемое пользователем имя группы рабочей нагрузки. Аргумент group_name является алфавитно-цифровым и может содержать до 128 символов. Данный аргумент должен быть уникальным в экземпляре SQL Server и соответствовать правилам для идентификаторов.

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

    • 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 должно быть равным 0 или положительным целым числом. Значение value по умолчанию равно 0 и использует внутренние вычисления, основанные на затратах запроса, для определения максимального времени.

  • MAX_DOP =value
    Указывает максимальную степень параллелизма (DOP) для параллельных запросов. Значение value должно быть равным 0 или положительным целым числом. Диапазон допустимых значений для value — от 0 до 64. Значение value по умолчанию, равное 0, использует глобальные настройки. MAX_DOP обрабатывается следующим образом.

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

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

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

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

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

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

  • USING { pool_name | "default" }
    Связывает группу рабочей нагрузки с пулом ресурсов, определяемых пользователем, который идентифицируется по значению pool_name. При этом группа рабочей нагрузки помещается в пул ресурсов. Если значение pool_name не предоставлено либо если не использован аргумент USING, группа рабочей нагрузки помещается в стандартный пул по умолчанию регулятора ресурсов.

    Слово default является зарезервированным словом и при использовании с аргументом USING должно быть заключено в кавычки ("") либо квадратные скобки ([]).

    Примечание

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

Замечания

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

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

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

Разрешения

Необходимо разрешение CONTROL SERVER.

Примеры

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

CREATE WORKLOAD GROUP newReports
    USING "default" ;
GO

См. также

Справочник

ALTER WORKLOAD GROUP (Transact-SQL)

DROP WORKLOAD GROUP (Transact-SQL)

CREATE RESOURCE POOL (Transact-SQL)

Инструкция ALTER RESOURCE POOL (Transact-SQL)

DROP RESOURCE POOL (Transact-SQL)

ALTER RESOURCE GOVERNOR (Transact-SQL)