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'
);