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


CREATE RESOURCE POOL (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Создает регулятор ресурсов пул ресурсов. Пул ресурсов представляет подмножество физических ресурсов (ЦП, памяти и операций ввода-вывода) экземпляра ядра СУБД. Регулятор ресурсов позволяет зарезервировать или ограничить ресурсы сервера между пулами ресурсов до 64 пулов.

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

Заметка

Для Управляемого экземпляра SQL Azure необходимо быть в контексте базы данных master для изменения конфигурации регулятора ресурсов.

Соглашения о синтаксисе Transact-SQL

Синтаксис

CREATE RESOURCE POOL pool_name
[ WITH
    (
        [ MIN_CPU_PERCENT = value ]
        [ [ , ] MAX_CPU_PERCENT = value ]
        [ [ , ] CAP_CPU_PERCENT = value ]
        [ [ , ] AFFINITY {SCHEDULER =
                  AUTO
                | ( <scheduler_range_spec> )
                | NUMANODE = ( <NUMA_node_range_spec> )
                } ]
        [ [ , ] MIN_MEMORY_PERCENT = value ]
        [ [ , ] MAX_MEMORY_PERCENT = value ]
        [ [ , ] MIN_IOPS_PER_VOLUME = value ]
        [ [ , ] MAX_IOPS_PER_VOLUME = value ]
    )
]
[;]

<scheduler_range_spec> ::=
{ SCHED_ID | SCHED_ID TO SCHED_ID }[,...n]

<NUMA_node_range_spec> ::=
{ NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID }[,...n]

Аргументы

pool_name

Определяемое пользователем имя для пула ресурсов. pool_name является буквенно-цифровым, может быть до 128 символов, должен быть уникальным в экземпляре ядра СУБД и должен соответствовать правилам для идентификаторов базы данных .

MIN_CPU_PERCENT = значение

Указывает гарантированную среднюю пропускную способность ЦП для всех запросов в пуле ресурсов при возникновении состязания использования ЦП. value имеет тип integer и значение по умолчанию 0. Диапазон допустимых значений для value — от 0 до 100.

MAX_CPU_PERCENT = значение

Указывает максимальную среднюю пропускную способность ЦП, которую получают все запросы в пуле ресурсов при возникновении спорных данных ЦП. value имеет тип integer и значение по умолчанию 100. Диапазон допустимых значений для value — от 1 до 100.

CAP_CPU_PERCENT = значение

Область применения: SQL Server 2012 (11.x) и более поздних версий.

Указывает жесткое ограничение пропускной способности ЦП, которое получают все запросы в пуле ресурсов. Ограничивает максимальный уровень пропускной способности ЦП заданным значением. value имеет тип integer и значение по умолчанию 100. Диапазон допустимых значений для value — от 1 до 100.

Заметка

Из-за статистической природы управления ЦП вы можете заметить случайные короткие пики, превышающие значение, указанное в CAP_CPU_PERCENT.

AFFINITY {SCHEDULER = AUTO | ( <указатель_диапазона_планировщика> ) | NUMANODE = (<указатель_диапазона_узла_NUMA>)}

Область применения: SQL Server 2012 (11.x) и более поздних версий.

Подключает пул ресурсов к заданным планировщикам. Значение по умолчанию — AUTO.

Указание <scheduler_range_spec> для AFFINITY SCHEDULER сходства пула ресурсов с планировщиками ядра СУБД, определенными указанными идентификаторами. Эти идентификаторы сопоставляются со значениями в столбце scheduler_id в sys.dm_os_schedulers.

Указание <NUMA_node_range_spec> для AFFINITY NUMANODE сопоставляет пул ресурсов с планировщиками ядра СУБД, которые сопоставляются с логическими ЦП, соответствующими заданному узлу NUMA или диапазону узлов. Следующий Transact-SQL запрос можно использовать для обнаружения сопоставления между физической конфигурацией NUMA и идентификаторами планировщика ядра СУБД.

SELECT osn.memory_node_id AS numa_node_id,
       sc.cpu_id,
       sc.scheduler_id
FROM sys.dm_os_nodes AS osn
INNER JOIN sys.dm_os_schedulers AS sc
ON osn.node_id = sc.parent_node_id
   AND
   sc.scheduler_id < 1048576;

MIN_MEMORY_PERCENT = значение

Указывает минимальный объем памяти рабочей области запроса, зарезервированной для пула ресурсов, который не может быть предоставлен другим пулам ресурсов. value имеет тип integer и значение по умолчанию 0. Допустимый диапазон для значения составляет от 0 до 100.

MAX_MEMORY_PERCENT = значение

Указывает максимальный объем памяти рабочей области запроса, которую могут использовать запросы в этом пуле ресурсов. value имеет тип integer и значение по умолчанию 100. Диапазон допустимых значений для value — от 1 до 100.

MIN_IOPS_PER_VOLUME = значение

Область применения: SQL Server 2014 (12.x) и более поздних версий.

Указывает минимальный объем операций ввода-вывода в секунду (IOPS) на дисковый том, который следует резервировать для пула ресурсов. Диапазон допустимых значений для value — от 0 до 2^31-1 (2 147 483 647). Укажите значение 0, чтобы указать не минимальное значение для пула. По умолчанию установлено значение 0.

MAX_IOPS_PER_VOLUME = значение

Область применения: SQL Server 2014 (12.x) и более поздних версий.

Указывает максимальный объем операций ввода-вывода в секунду (IOPS) на дисковый том, при котором поддерживается пул ресурсов. Диапазон допустимых значений для value — от 0 до 2^31-1 (2 147 483 647). Укажите значение 0, чтобы удалить ограничение операций ввода-вывода в секунду для пула. По умолчанию установлено значение 0.

Если MAX_IOPS_PER_VOLUME для пула имеет значение 0, пул не управляется операцией ввода-вывода вообще и может принимать все операции ввода-вывода в систему, даже если другие пулы имеют MIN_IOPS_PER_VOLUME набор. В этом случае рекомендуется задать для этого пула значение MAX_IOPS_PER_VOLUME большое число (например, максимальное значение 2^31-1), чтобы сделать этот пул управляемым операцией ввода-вывода и учитывать резервирования операций ввода-вывода в секунду, которые могут существовать для других пулов.

Замечания

Сумма MIN_CPU_PERCENT или MIN_MEMORY_PERCENT для всех пулов ресурсов не может превышать 100 процентов.

MIN_IOPS_PER_VOLUME и MAX_IOPS_PER_VOLUME укажите минимальные и максимальные IOS в секунду. IOs может быть либо чтением, либо записью, и может иметь любой размер. Поэтому с одинаковыми ограничениями операций ввода-вывода в секунду минимальная и максимальная пропускная способность ввода-вывода может отличаться в зависимости от размера операций ввода-вывода в рабочей нагрузке.

Значения параметров MAX_CPU_PERCENT и MAX_MEMORY_PERCENT должны быть больше или равны значениям параметров MIN_CPU_PERCENT и MIN_MEMORY_PERCENT соответственно.

Параметр CAP_CPU_PERCENT отличается от параметра MAX_CPU_PERCENT тем, что рабочие нагрузки, связанные с этим пулом, могут использовать ресурсы ЦП в объеме, который превышает значение параметра MAX_CPU_PERCENT (если они доступны), но без превышения значения параметра CAP_CPU_PERCENT. Хотя в течение длительного периода времени рабочие нагрузки не могут превышать CAP_CPU_PERCENT более коротких пиков выше CAP_CPU_PERCENT, даже если дополнительная емкость ЦП доступна.

Общий процент ЦП для каждого сходного компонента (планировщиков) или узлов NUMA не может превышать 100 процентов.

Дополнительные сведения см. в регулятора ресурсов ипула ресурсов .

Разрешения

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

Примеры

Дополнительные примеры конфигурации регулятора ресурсов см. в примерах конфигурации регулятора ресурсов и рекомендациях.

Создание пула ресурсов

В этом примере создан пул ресурсов с именем bigPool. В этом пуле используются параметры регулятора ресурсов по умолчанию.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

Настройка резервирований ЦП и памяти

В этом примере настраивается пул ресурсов adhocPool следующим образом:

  • Резервирует 10 процентов ЦП и 5 процентов памяти рабочей области запросов, используя MIN_CPU_PERCENT и MIN_MEMORY_PERCENT соответственно.
  • Задает ограничение памяти рабочей области запроса на 15 процентов с помощью MAX_MEMORY_PERCENT.
  • Задает 20 процентов обратимой загрузки ЦП в 30 процентов жесткой крышки ЦП с помощью MAX_CPU_PERCENT и CAP_CPU_PERCENT соответственно.
  • Сопоставление пула с двумя диапазонами логических ЦП (от 0 до 63 и 128 до 191) с помощью AFFINITY SCHEDULER.

Область применения: SQL Server 2012 (11.x) и более поздних версий.

CREATE RESOURCE POOL adhocPool
WITH (
     MIN_CPU_PERCENT = 10,
     MAX_CPU_PERCENT = 20,
     CAP_CPU_PERCENT = 30,
     MIN_MEMORY_PERCENT = 5,
     MAX_MEMORY_PERCENT = 15,
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191)
     );

Настройка резервирования и ограничения операций ввода-вывода в секунду

В этом примере зарезервирует 200 операций ввода-вывода в секунду на том для пула с помощью MIN_IOPS_PER_VOLUMEи ограничивает количество операций ввода-вывода в секунду до 1000, используя MAX_IOPS_PER_VOLUME. Эти значения управляют общими операциями чтения и записи физических операций ввода-вывода, которые доступны для запросов с помощью пула ресурсов.

Область применения: SQL Server 2014 (12.x) и более поздних версий.

CREATE RESOURCE POOL PoolAdmin
WITH (
     MIN_IOPS_PER_VOLUME = 200,
     MAX_IOPS_PER_VOLUME = 1000
     );