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