Перейти к основному содержимому
Версия: 2.0.x

CREATE RESOURCE GROUP

CREATE RESOURCE GROUP создаёт группу ресурсов.

Подробнее см. в Группа ресурсов.

подсказка

Для выполнения этой операции требуется привилегия CREATE RESOURCE GROUP на уровне SYSTEM. Вы можете следовать инструкциям в GRANT для предоставления этой привилегии.

Синтаксис

CREATE RESOURCE GROUP resource_group_name
TO CLASSIFIER1, CLASSIFIER2, ...
WITH resource_limit

Параметры

  • resource_group_name: Название создаваемой группы ресурсов.

  • CLASSIFIER: Классификаторы, используемые для фильтрации запросов, на которые накладываются ограничения ресурсов. Классификатор необходимо указывать в виде пар "key"="value". Для группы ресурсов можно установить несколько классификаторов.

    Параметры для классификаторов перечислены ниже:

    ПараметрОбязательныйОписание
    userНетИмя пользователя.
    roleНетРоль пользователя.
    query_typeНетТип запроса. Поддерживаются SELECT и INSERT (с версии v1.5.2). Когда задачи INSERT попадают в группу ресурсов с query_type равным insert, узел BE резервирует указанные ресурсы CPU для задач.
    source_ipНетCIDR-блок, с которого инициируется запрос.
    dbНетБаза данных, к которой обращается запрос. Можно указать несколько через запятую (,).
    plan_cpu_cost_rangeНетОценочный диапазон стоимости CPU для запроса. Его значение эквивалентно полю PlanCpuCost в fe.audit.log и не имеет единицы измерения. Формат: [DOUBLE, DOUBLE). Значение по умолчанию NULL означает отсутствие такого ограничения. Этот параметр поддерживается с версии v1.5.2.
    plan_mem_cost_rangeНетОценочный диапазон стоимости памяти для запроса. Его значение эквивалентно полю PlanMemCost в fe.audit.log и не имеет единицы измерения. Формат: [DOUBLE, DOUBLE). Значение по умолчанию NULL означает отсутствие такого ограничения. Этот параметр поддерживается с версии v1.5.2.
  • resource_limit: Ограничения ресурсов, накладываемые на группу ресурсов. Ограничения необходимо указывать в виде пар "key"="value". Для группы ресурсов можно установить несколько ограничений.

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

    ПараметрОбязательныйОписание
    cpu_core_limitНетМягкое ограничение на количество ядер CPU, которые могут быть выделены группе ресурсов на BE. В реальных бизнес-сценариях ядра CPU, выделяемые группе ресурсов, пропорционально масштабируются в зависимости от доступности ядер CPU на BE. Допустимые значения: любое ненулевое положительное целое число.
    cpu_weightНетОбязательный параметр для создания Shared-групп ресурсов. Указывает вес планирования CPU для группы ресурсов на одном узле BE, определяя относительную долю процессорного времени, выделяемого задачам этой группы. В реальных бизнес-сценариях ядра CPU, выделяемые группе ресурсов, пропорционально масштабируются в зависимости от доступности ядер CPU на BE. Диапазон значений: (0, avg_be_cpu_cores], где avg_be_cpu_cores — среднее количество ядер CPU на всех узлах BE. Параметр действует только при значении больше 0. Только один из параметров cpu_weight или exclusive_cpu_cores может быть установлен больше 0.
    exclusive_cpu_coresНетОбязательный параметр для создания Exclusive-групп ресурсов (с жёстким ограничением CPU). Означает резервирование exclusive_cpu_cores ядер CPU исключительно для этой группы ресурсов, делая их недоступными для других групп, даже когда они простаивают, и ограничивая группу ресурсов использованием только этих зарезервированных ядер, предотвращая использование доступных ресурсов CPU других групп. Диапазон значений: (0, min_be_cpu_cores - 1], где min_be_cpu_cores — минимальное количество ядер CPU на всех узлах BE. Параметр действует только при значении больше 0. Только один из параметров cpu_weight или exclusive_cpu_cores может быть установлен больше 0.
    mem_limitНетПроцент памяти, который может использоваться для запросов, от общей памяти, предоставляемой BE. Единица: %. Допустимые значения: (0, 1).
    concurrency_limitНетВерхний предел параллельных запросов в группе ресурсов. Используется для предотвращения перегрузки системы из-за слишком большого количества параллельных запросов.
    max_cpu_coresНетОграничение ядер CPU для этой группы ресурсов на одном узле BE. Действует только при значении больше 0. Диапазон: [0, avg_be_cpu_cores], где avg_be_cpu_cores — среднее количество ядер CPU на всех узлах BE. По умолчанию: 0.
    big_query_cpu_second_limitНетВерхний предел времени CPU для большого запроса. Параллельные запросы суммируют время. Единица измерения: секунды.
    big_query_scan_rows_limitНетВерхний предел количества строк, которые могут быть просканированы большим запросом.
    big_query_mem_limitНетВерхний предел использования памяти для большого запроса. Единица измерения: байты.

    ПРИМЕЧАНИЕ

    До версии v1.5.2 Selena позволяла устанавливать type группы ресурсов в short_query. Однако параметр type устарел и заменён на exclusive_cpu_cores. Для любых существующих групп ресурсов этого типа система автоматически преобразует их в Exclusive-группу ресурсов, где значение exclusive_cpu_cores равно cpu_weight после обновления до версии v1.5.2.

Пример

Пример 1: Создание Shared-группы ресурсов rg1 на основе нескольких классификаторов.

CREATE RESOURCE GROUP rg1
TO
(user='rg1_user1', role='rg1_role1', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user2', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user3', source_ip='192.168.x.x/24'),
(user='rg1_user4'),
(db='db1')
WITH ('cpu_weight' = '10',
'mem_limit' = '20%',
'big_query_cpu_second_limit' = '100',
'big_query_scan_rows_limit' = '100000',
'big_query_mem_limit' = '1073741824'
);

Пример 2: Создание Exclusive-группы ресурсов rg2 на основе нескольких классификаторов.

CREATE RESOURCE GROUP rg2
TO
(user='rg1_user5', role='rg1_role5', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user6', query_type in ('select'), source_ip='192.168.x.x/24'),
(user='rg1_user7', source_ip='192.168.x.x/24'),
(user='rg1_user8'),
(db='db2')
WITH ('exclusive_cpu_cores' = '10',
'mem_limit' = '20%',
'type' = 'normal',
'big_query_cpu_second_limit' = '100',
'big_query_scan_rows_limit' = '100000',
'big_query_mem_limit' = '1073741824'
);