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(с версии 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, указывающее на отсутствие такого ограничения. Этот параметр поддерживается начиная с версии 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 Нет Верхний лимит использования памяти большим запросом. Единица - байт. ПРИМЕЧАНИЕ
До версии 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'
);