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 | "по умолчанию"
    Имя существующей, определяемой пользователем или заданной по умолчанию группы рабочей нагрузки регулятора ресурсов, создаваемой при установке SQL Server 2008.

    Параметр "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 или быть положительным целым числом. Допустимые значения для value — от 0 до 64. По умолчанию для value задано значение 0, сервер выбирает максимальную степень параллелизма. Это значение по умолчанию, которое рекомендуется использовать. Максимальное используемое сервером значение составляет 64, когда value равняется 0. MAX_DOP обрабатывается следующим образом.

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

    • MAXDOP в качестве подсказки в запросе всегда переопределяет вызов хранимой процедуры 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 | "по умолчанию" }
    Связывает группу рабочей нагрузки с определяемым пользователем пулом ресурсов, идентифицируемым по значению 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

Журнал изменений

Обновления

К описанию аргумента REQUEST_MAX_MEMORY_GRANT_PERCENT добавлены сведения, которые необходимо принимать во внимание.