ALTER RESOURCE GROUP

Изменение лимитов для группы ресурсов.

Синтаксис

ALTER RESOURCE GROUP name SET group_attribute value;

Где group_attribute имеет следующий вид:

CONCURRENCY integer
CPU_RATE_LIMIT integer 
CPUSET tuple 
MEMORY_LIMIT integer
MEMORY_SHARED_QUOTA integer
MEMORY_SPILL_RATIO integer

Описание

ALTER RESOURCE GROUP изменяет лимиты для группы ресурсов. Изменять группы ресурсов могут только суперпользователи.

Пользователи могут устанавливать или сбрасывать лимит параллелизма для групп ресурсов, которые контролируют максимальный параллелизм активности роли. Также пользователи могут регулировать общий объём памяти или процессорных ресурсов, который могут использовать все запросы, отправленные через группу ресурсов, на каждом хосте сегмента, путём изменения лимитов памяти или CPU для этой группы ресурсов.

Когда пользователь изменяет режим или лимит ресурса CPU группы ресурсов, новое значение или режим вступают в силу немедленно.

Когда пользователь изменяет лимит памяти для группы ресурсов, созданной для роли, новый лимит применяется сразу, если текущее использование ресурсов не превышает новое значение и в группе ресурсов нет выполняющихся транзакций. Если текущее потребление ресурсов превышает новое значение лимита памяти, либо если в другой группе ресурсов выполняется транзакция, удерживающая определённые ресурсы, база данных YMatrix откладывает применение нового лимита до тех пор, пока использование ресурсов не войдёт в пределы нового значения.

Когда пользователь увеличивает лимит памяти для группы ресурсов, созданной для внешних компонентов, новый лимит начинает действовать по мере освобождения ресурсов. Если пользователь уменьшает лимит памяти для таких групп ресурсов, производительность зависит от конкретного компонента. Например, при снижении лимита памяти для группы ресурсов, выделенной среде выполнения PL/Container, запрос в запущенном контейнере может завершиться ошибкой нехватки памяти.

Пользователь может изменить тип ограничения в одном вызове команды ALTER RESOURCE GROUP.

Параметры

name

  • Имя изменяемой группы ресурсов.

CONCURRENCY integer

  • Максимальное количество параллельных транзакций, разрешённых для пользователя в данной группе ресурсов, включая активные и простаивающие. Любая транзакция, подаваемая после достижения лимита CONCURRENCY, попадает в очередь. По завершении выполняющейся транзакции из очереди выбирается самая ранняя транзакция и запускается.
    Значение CONCURRENCY должно быть целым числом в диапазоне [0.. max_connections]. Значение по умолчанию для групп ресурсов, созданных пользователем для роли, равно 20.
    Примечание: пользователь не может установить значение CONCURRENCY для admin_group равным нулю (0).

CPU_RATE_LIMIT integer

  • Процент процессорных ресурсов, выделенных текущей группе ресурсов. Минимальное значение — 1%, максимальное — 100%. Суммарное значение CPU_RATE_LIMIT для всех групп ресурсов в кластере базы данных YMatrix не может превышать 100%.
    Если пользователь изменяет параметр CPU_RATE_LIMIT для группы ресурсов, ранее имевшей установленное значение, то режим CPUSET будет отключён, зарезервированные ядра CPU возвращаются в систему YMatrix, а значение CPUSET устанавливается в -1.

CPUSET tuple

  • Ядра процессора, зарезервированные для текущей группы ресурсов. Указанные пользователем ядра в кортеже должны быть доступны в системе, и нельзя дублировать ядра, уже назначенные другим группам ресурсов.
    tuple — это список номеров ядер или интервалов ядер, разделённых запятыми. Кортеж необходимо заключать в одинарные кавычки, например '1,3-4'.
    Если пользователь изменяет параметр CPUSET для группы ресурсов, ранее использовавшей CPU_RATE_LIMIT, то CPU_RATE_LIMIT будет отключён, зарезервированные ресурсы CPU возвращаются в систему YMatrix, а значение CPU_RATE_LIMIT устанавливается в -1.
    Изменение CPUSET возможно только для групп ресурсов в кластере YMatrix, где включено управление ресурсами на уровне групп.

MEMORY_LIMIT integer

  • Процент ресурсов памяти, выделенных текущей группе ресурсов. Минимальное значение — 0%, максимальное — 100%. При значении 0 YMatrix не выделяет резервируемой памяти для группы, а использует глобальную общую память. В этом случае параметр MEMORY_SPILL_RATIO также должен быть установлен в 0.
    Сумма значений MEMORY_LIMIT для всех групп ресурсов в кластере YMatrix не может превышать 100%. Если сумма меньше 100%, оставшаяся часть становится глобальной общей памятью.

MEMORY_SHARED_QUOTA integer

  • Процент ресурсов памяти, выделенных группе ресурсов, которые распределяются между транзакциями совместно. Минимальное значение — 0%, максимальное — 100%. Значение по умолчанию для MEMORY_SHARED_QUOTA — 80%.

MEMORY_SPILL_RATIO integer

  • Порог использования памяти для операций, интенсивно потребляющих память, в транзакциях, выполняемых в группе ресурсов. Минимальное значение — 0%, максимальное — 100%. Значение по умолчанию для MEMORY_SPILL_RATIO — 20%.

Замечания

Для назначения определённой группы ресурсов роли (пользователю) используйте команды CREATE ROLE или ALTER ROLE.

Команды ALTER RESOURCE GROUP нельзя выполнять внутри явных транзакций или подтранзакций.

Примеры

Изменение лимита активных транзакций для группы ресурсов:

ALTER RESOURCE GROUP rgroup1 SET CONCURRENCY 13;

Обновление лимитов CPU для группы ресурсов:

ALTER RESOURCE GROUP rgroup2 SET CPU_RATE_LIMIT 45;

Обновление лимитов памяти для группы ресурсов:

ALTER RESOURCE GROUP rgroup3 SET MEMORY_LIMIT 30;

Повышение порога переполнения памяти для группы ресурсов относительно значений по умолчанию:

ALTER RESOURCE GROUP rgroup4 SET MEMORY_SPILL_RATIO 25;

Резервирование ядер CPU для группы ресурсов 1:

ALTER RESOURCE GROUP rgroup5 SET CPUSET '1';

Совместимость

Оператор ALTER RESOURCE GROUP является расширением базы данных YMatrix и отсутствует в стандартной спецификации PostgreSQL.

Смотрите также

CREATE RESOURCE GROUP, DROP RESOURCE GROUP