Перейти к основному содержимому

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: Классификаторы, используемые для фильтрации запросов, на которые накладываются ограничения ресурсов. Вы должны указать классификатор, используя пары "ключ"="значение". Вы можете установить несколько классификаторов для группы ресурсов.

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

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

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

    ПараметрОбязательныйОписание
    cpu_core_limitНетМягкое ограничение на количество ядер CPU, которые могут быть выделены группе ресурсов на BE. В реальных бизнес-сценариях ядра CPU, выделенные группе ресурсов, пропорционально масштабируются на основе доступности ядер CPU на BE. Допустимые значения: любое ненулевое положительное целое число.
    cpu_weightНетОбязательный параметр для создания Shared групп ресурсов. Он указывает вес планирования CPU группы ресурсов на одном узле BE, определяя относительную долю времени CPU, выделенного задачам из этой группы. В реальных бизнес-сценариях ядра 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, предотвращая использование доступных ресурсов 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НетВерхний лимит использования памяти большим запросом. Единица - байт.

    ПРИМЕЧАНИЕ

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

Пример

Пример 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'
);