CREATE RESOURCE GROUP
Определяет новую ресурсную группу.
Синтаксис
CREATE RESOURCE GROUP <name> WITH (<group_attribute>=<value> [, ... ])
где group_attribute может имет следующие значения:
CPU_RATE_LIMIT=<integer> | CPUSET='<master_cores>;<segment_cores>'
[ MEMORY_LIMIT=<integer> ]
[ CONCURRENCY=<integer> ]
[ MEMORY_SHARED_QUOTA=<integer> ]
[ MEMORY_SPILL_RATIO=<integer> ]
[ MEMORY_AUDITOR= {vmtracker | cgroup} ]
Описание
Команда CREATE RESOURCE GROUP создает новую ресурсную группу (resource group) для управления ресурсами Greengage DB.
Вы можете создавать ресурсные группы для управления ресурсами ролей или для управления ресурсами внешнего компонента Greengage DB, такого как PL/Container.
Ресурсная группа, которую вы создаете для управления пользовательской ролью, определяет ограничения на количество параллельных транзакций, память и процессор для роли, когда включены ресурсные группы. Такие ресурсные группы можно назначать одной или нескольким ролям.
Ресурсная группа, которую вы создаете для управления ресурсами внешнего компонента Greengage DB, такого как PL/Container, определяет ограничения по памяти и процесору для компонента, когда включены ресурсные группы. Эти ресурсные группы используют cgroups как для управления ресурсами процессора и памятью. Назначение ресурсных групп внешним компонентам зависит от конкретного компонента. Например, вы назначаете ресурсную группу PL/Container при настройке среды выполнения PL/Container. Вы не можете назначить ресурсной группе, созданной для внешних компонентов, роли, а также не можете назначить ресурсную группу, созданную для ролей, внешнему компоненту.
Чтобы создать ресурсную группу, у вас должны быть привилегии SUPERUSER.
Максимальное количество ресурсных групп, разрешенное в кластере Greengage DB, равно 100.
Greengage DB предварительно определяет две ресурсные группы по умолчанию: admin_group и default_group.
Эти имена групп, а также имя группы none, зарезервированы.
Чтобы задать подходящие ограничения для ресурсных групп, администратор Greengage DB должен быть знаком с запросами, которые обычно выполняются в системе, а также с пользователями/ролями, выполняющими эти запросы, и внешними компонентами, которые они могут использовать, такими как PL/Containers.
После создания ресурсной группы для роли назначьте группу одной или нескольким ролям с помощью команд ALTER ROLE или CREATE ROLE.
После создания ресурсной группы для управления ресурсами процессора и памяти внешнего компонента настройте внешний компонент на использование этой ресурсной группы.
Например, настройте параметр resource_group_id среды выполнения PL/Container.
Параметры
| Параметр | Описание |
|---|---|
name |
Имя ресурсной группы |
CONCURRENCY <integer> |
Максимальное количество параллельных транзакций (включая активные и бездействующие транзакции), разрешенное для ресурсных групп, назначенных ролям.
Значение Для ресурсных групп, создаваемых для внешних компонентов, необходимо установить значение ПРИМЕЧАНИЕ
Значение |
CPU_RATE_LIMIT <integer> |
Обязательный параметр.
При создании ресурсной группы необходимо указать либо
Задавайте ядра в виде списка, разделенного запятыми, содержащего одиночные номера ядер или интервалы номеров ядер.
Сначала задайте ядра хоста мастера, затем ядра сегментных хостов, и разделите эти две части точкой с запятой.
Полную конфигурацию ядер необходимо заключить в одинарные кавычки.
Например, |
MEMORY_LIMIT <integer> |
Общий процент ресурсов памяти Greengage DB, который следует зарезервировать для этой ресурсной группы.
Минимальный процент памяти для ресурсной группы равен Когда Сумма значений |
MEMORY_SHARED_QUOTA <integer> |
Квота разделяемой памяти в ресурсной группе.
Группы с установленным порогом |
MEMORY_SPILL_RATIO <integer> |
Порог использования памяти для операторов, интенсивно использующих память, в транзакции.
При достижении этого порога транзакция выполняет сброс (spill) на диск.
Вы можете указать целочисленное процентное значение от |
MEMORY_AUDITOR {vmtracker | cgroup} |
Аудитор памяти для ресурсной группы.
Greengage DB использует отслеживание виртуальной памяти для ресурсов ролей и отслеживание памяти cgroup для ресурсов, используемых внешними компонентами.
Значение Когда вы создаете ресурсную группу, указав |
Примечания
Нельзя выполнять команду CREATE RESOURCE GROUP внутри явной транзакции или подтранзакции.
Используйте системное представление gp_toolkit.gp_resgroup_config, чтобы показать настройки ограничений для всех ресурсных групп:
SELECT * FROM gp_toolkit.gp_resgroup_config;
Примеры
Создать ресурсную группу с ограничениями по CPU и памяти в процентах, равными 35:
CREATE RESOURCE GROUP rgroup1 WITH (
CPU_RATE_LIMIT = 35,
MEMORY_LIMIT = 35
);
Создать ресурсную группу с ограничением параллельных транзакций 20, ограничением памяти 15 и ограничением CPU 25:
CREATE RESOURCE GROUP rgroup2 WITH (
CONCURRENCY = 20,
MEMORY_LIMIT = 15,
CPU_RATE_LIMIT = 25
);
Создать ресурсную группу для управления ресурсами PL/Container, указав ограничение памяти 10 и ограничение CPU 10:
CREATE RESOURCE GROUP plc_run1 WITH (
MEMORY_LIMIT =10,
CPU_RATE_LIMIT =10,
CONCURRENCY =0,
MEMORY_AUDITOR = cgroup
);
Создать ресурсную группу с ограничением памяти в процентах, равным 11, и назначить ей ядро CPU 1 на хосте мастера и ядра 1–3 на сегментных хостах:
CREATE RESOURCE GROUP rgroup3 WITH (
CPUSET = '1;1-3',
MEMORY_LIMIT = 11
);
Совместимость
CREATE RESOURCE GROUP является расширением Greengage DB.
Ресурсные группы и управление ресурсами не предусмотрены в стандарте SQL.