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


CREATE WORKLOAD GROUP (Transact-SQL)

Создает группу рабочей нагрузки регулятора ресурсов и связывает ее с пулом ресурсов регулятора ресурсов. Регулятор ресурсов имеется только в выпусках SQL Server Enterprise, Developer и Evaluation.

Значок ссылки на разделСоглашение о синтаксисе 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 группы рабочей нагрузки.

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

    • Группа рабочей нагрузки 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 должно быть заключено в кавычки ("") либо квадратные скобки ([]). Дополнительные сведения см. в разделе Идентификаторы с разделителями (компонент Database Engine).

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

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

Замечания

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

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

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

Разрешения

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

Примеры

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

CREATE WORKLOAD GROUP newReports
    USING "default" ;
GO