ALTER WORKLOAD GROUP (Transact-SQL)
Изменяет существующую конфигурацию группы рабочей нагрузки регулятора ресурсов и при необходимости назначает ее для пула ресурсов регулятора ресурсов.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии). |
Синтаксические обозначения в 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). Дополнительные сведения см. в разделе Идентификаторы баз данных.
Примечание
В стандартных группах рабочей нагрузки и пулах ресурсов используются имена со строчными буквами, такие как «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, number of CPUs).
Предупреждение
Изменение 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). Дополнительные сведения см. в разделе Идентификаторы баз данных.
Примечание
В параметре "default" учитывается регистр.
Замечания
Использование инструкции ALTER WORKLOAD GROUP допустимо для группы по умолчанию.
Изменения конфигурации группы рабочей нагрузки не вступают в силу до тех пор, пока не будет выполнена инструкция ALTER RESOURCE GOVERNOR RECONFIGURE.
При выполнении инструкций DDL рекомендуется знание положений регулятора ресурсов. Дополнительные сведения см. в разделе Регулятор ресурсов.
REQUEST_MEMORY_GRANT_PERCENT: В SQL Server 2005 разрешено создание индексов для использования большего объема памяти рабочего пространства, чем было указано изначально, в целях повышения быстродействия. Эта специальная обработка поддерживается регулятором ресурсов в более поздних версиях, однако изначально предоставленная память и любая дополнительная выделенная память ограничены настройками группы рабочей нагрузки и пула ресурсов.
Создание индексов для секционированной таблицы
Объем памяти, затрачиваемой на создание индекса в невыровненной секционированной таблице, пропорционален количеству секций, охватываемых индексом. Если общий объем необходимой памяти превышает предел на запрос (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
См. также
Справочник
CREATE 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)