Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Группы ресурсов
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
В следующей таблице перечислены настраиваемые параметры групп ресурсов.
| Параметр | Описание | Допустимые значения | Значение по умолчанию |
|---|---|---|---|
| CONCURRENCY | Максимальное количество одновременных транзакций (активных и простаивающих) в группе ресурсов. | [0 – max_connections] | 20 |
| CPU_MAX_PERCENT | Максимальный процент ресурсов ЦПУ, который может использовать группа ресурсов. | [1 – 100] | -1 (отключено) |
| CPU_WEIGHT | Вес приоритета планирования для группы ресурсов. | [1 – 500] | 100 |
| CPUSET | Конкретные логические ядра ЦПУ (или потоки гиперпоточности), зарезервированные для группы. | Зависит от системы | -1 |
| MEMORY_QUOTA | Лимит памяти (в МБ), выделяемый группе ресурсов. | Целое число (МБ) | -1 (отключено; используется statement_mem как лимит памяти на запрос) |
| MIN_COST | Минимальная стоимость плана запроса, необходимая для управления запросом через группу ресурсов. | Целое число | 0 |
Примечание!
Группы ресурсов не применяются к командамSET,RESETиSHOW.
Когда пользователь выполняет запрос, YMatrix проверяет его на соответствие ограничениям, заданным для назначенной ему группы ресурсов.
Параметр CONCURRENCY задаёт максимальное количество одновременных транзакций в группе ресурсов. Значение по умолчанию — 20. Значение 0 запрещает выполнение запросов в группе.
Если лимиты ресурсов не превышены и запрос не нарушает ограничение параллельности, YMatrix выполняет его немедленно. Если достигнут лимит параллельности, последующие транзакции ставятся в очередь до завершения других запросов.
Параметр gp_resource_group_queuing_timeout определяет, как долго ожидающая транзакция может находиться в очереди перед отменой. Значение по умолчанию — 0, что означает неограниченное ожидание.
Обход ограничений групп ресурсов
gp_resource_group_bypass: включает или отключает обход ограничений параллельности. При значении true запросы пропускают проверку параллельности и выполняются немедленно. Память выделяется согласно statement_mem; её нехватка приводит к ошибке выполнения запроса. Этот параметр можно задать только на уровне сеанса и нельзя изменить внутри транзакции или функции.gp_resource_group_bypass_catalog_query: управляет тем, обходят ли запросы к каталогу ограничения групп ресурсов. Значение по умолчанию — true. Полезно для клиентов с графическим интерфейсом, выполняющих запросы метаданных к системным каталогам. Такие запросы работают вне групп ресурсов и используют statement_mem для выделения памяти.gp_resource_group_bypass_direct_dispatch: определяет, обходят ли запросы с прямой диспетчеризацией ограничения групп ресурсов. При значении true такие запросы игнорируют ограничения ЦПУ и памяти своей группы и выполняются немедленно. Память выделяется согласно statement_mem; её нехватка приводит к ошибке. Этот параметр действует только на уровне сеанса и не может быть изменён внутри транзакций или функций.YMatrix поддерживает два режима распределения ЦПУ:
Разные группы ресурсов в одном кластере могут использовать разные режимы, но каждая группа использует только один режим одновременно. Режим можно изменить во время выполнения.
Глобальный параметр gp_resource_group_cpu_limit определяет максимальный процент системных ресурсов ЦПУ, который может быть выделен группам ресурсов на каждом сегменте.
Параметр CPUSET резервирует конкретные ядра ЦПУ для группы ресурсов. При его настройке YMatrix отключает CPU_MAX_PERCENT и CPU_WEIGHT для этой группы и устанавливает оба значения в -1.
Примечания по использованию:
;) для разделения спецификаций ядер master и segment. В каждой части перечисляйте отдельные ядра или диапазоны через запятую (,), заключённые в одинарные кавычки (' '). Например, '1;1,3-4' назначает ядро 1 на master и ядра 1, 3 и 4 на сегментах.Параметр CPU_MAX_PERCENT задаёт жёсткий верхний предел использования ЦПУ группой ресурсов на каждом сегменте. Например, значение 40 позволяет использовать до 40% доступных ресурсов ЦПУ. Неиспользуемое время ЦПУ от групп с неполной загрузкой объединяется в общий пул неиспользованных циклов ЦПУ, из которого могут заимствовать другие группы.
Параметр CPU_WEIGHT определяет относительную долю времени ЦПУ, которую получает группа. Значение по умолчанию — 100, допустимый диапазон — от 1 до 500.
Примечания по использованию:
CPU_MAX_PERCENT = 100 для всех), первая группа получает 50% общего времени ЦПУ, а остальные — по 25% каждая.CPU_MAX_PERCENT = 100) изменяет доли: исходная группа получает 33%, две группы с весом 50 — примерно по 16,5% каждая, а новая группа — 33%.Пример конфигурации
| Имя группы | CONCURRENCY | CPU_MAX_PERCENT | CPU_WEIGHT |
|---|---|---|---|
| default_group | 20 | 50 | 10 |
| admin_group | 10 | 70 | 30 |
| system_group | 10 | 30 | 10 |
| test | 10 | 10 | 10 |
default_group получают базовую долю ЦПУ 10/(10+30+10+10) = 16% при высокой нагрузке. При наличии свободного ЦПУ они могут использовать до жёсткого лимита в 50%.admin_group получают 30/(10+30+10+10) = 50% при высокой нагрузке и до 70% при наличии свободного ЦПУ.test получают базовую долю 16%, но ограничены сверху значением CPU_MAX_PERCENT = 10 — даже при простое системы.Параметр MEMORY_QUOTA задаёт общий объём памяти (в МБ), резервируемый для группы ресурсов на каждом сегменте. Это суммарный объём памяти, доступный всем активным запросам в группе на этом сегменте. По умолчанию каждый запрос получает MEMORY_QUOTA / CONCURRENCY МБ.
Чтобы переопределить это поведение, сеанс может установить параметр gp_resgroup_memory_query_fixed_mem, чтобы задать фиксированный объём памяти для запроса, который может превышать выделение на запрос в рамках группы.
Примечания по использованию:
gp_resgroup_memory_query_fixed_mem, он переопределяет выделение памяти группой ресурсов.MEMORY_QUOTA / CONCURRENCY.MEMORY_QUOTA не задан (то есть равно -1), используется statement_mem как лимит памяти на запрос.gp_workfile_limit_files_per_query), YMatrix выдаёт ошибку нехватки памяти (OOM).Пример конфигурации
Рассмотрим группу ресурсов adhoc с MEMORY_QUOTA = 1536 МБ (1,5 ГБ) и CONCURRENCY = 3. По умолчанию каждый запрос получает 512 МБ (~500 МБ). Рассмотрим следующую последовательность:
ADHOC_1 отправляет запрос Q1 с gp_resgroup_memory_query_fixed_mem = 800 МБ. Q1 принимается.ADHOC_2 отправляет запрос Q2, используя значение по умолчанию — 512 МБ.Q1 и Q2 выполняются, пользователь ADHOC_3 отправляет запрос Q3 со значением по умолчанию — 512 МБ.Q1 и Q2 уже потребили 1312 МБ из квоты группы в 1536 МБ. Если в системе достаточно свободной памяти, Q3 может быть выполнен.ADHOC_4 отправляет запрос Q4 с gp_resgroup_memory_query_fixed_mem = 700 МБ.Q4 обходит ограничения группы через gp_resgroup_memory_query_fixed_mem, он выполняется немедленно.Особые случаи
gp_resource_group_bypass или gp_resource_group_bypass_catalog_query, запрос использует statement_mem как свой лимит памяти.(MEMORY_QUOTA / CONCURRENCY) < statement_mem, то statement_mem используется как фиксированное выделение памяти на запрос.statement_mem ограничено параметром max_statement_mem.MIN_COST используют statement_mem как свою квоту памяти.