Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Группы ресурсов
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
YMatrix поддерживает механизм обнаружения «разбегающихся» (runaway) запросов.
Для запросов, управляемых группами ресурсов, YMatrix может автоматически завершать их на основе объёма потребляемой памяти.
Соответствующие параметры конфигурации:
gp_vmem_protect_limit: задаёт общий объём памяти, который могут использовать все процессы postgres в активном экземпляре сегмента. Если запрос приводит к превышению этого лимита, дополнительная память не выделяется, и запрос завершается ошибкой.runaway_detector_activation_percent: при включённых группах ресурсов, если использование памяти превышает значение gp_vmem_protect_limit * runaway_detector_activation_percent, YMatrix начинает принудительно завершать запросы, управляемые группами ресурсов (за исключением запросов из system_group), начиная с запроса, потребляющего наибольший объём памяти. Завершение продолжается до тех пор, пока использование памяти не опустится ниже указанного порога.RESOURCE GROUP в командах CREATE ROLE или ALTER ROLE, чтобы назначить группу ресурсов роли базы данных:ALTER ROLE bill RESOURCE GROUP rg_light;
CREATE ROLE mary RESOURCE GROUP exec;
Одну группу ресурсов можно назначить одной или нескольким ролям.
Если существует иерархия ролей, группа ресурсов, назначенная родительской роли, не наследуется дочерними ролями.
NONE:ALTER ROLE mary RESOURCE GROUP NONE;
Просмотр ограничений групп ресурсов:
SELECT * FROM gp_toolkit.gp_resgroup_config;
Просмотр текущего состояния запросов в группах ресурсов:
SELECT * FROM gp_toolkit.gp_resgroup_status;
Просмотр использования памяти по хостам для каждой группы ресурсов:
SELECT * FROM gp_toolkit.gp_resgroup_status_per_host;
Просмотр, какие группы ресурсов назначены ролям:
SELECT rolname, rsgname
FROM pg_roles, pg_resgroup
WHERE pg_roles.rolresgroup = pg_resgroup.oid;
Просмотр выполняющихся и ожидающих запросов в группах ресурсов:
SELECT query, rsgname, wait_event_type, wait_event
FROM pg_stat_activity;
Отмена выполняющихся или ожидающих транзакций в группе ресурсов:
Чтобы вручную отменить транзакцию, сначала определите её идентификатор процесса (pid). Затем вызовите функцию pg_cancel_backend() для её завершения.
Шаги:
SELECT rolname, g.rsgname, pid, waiting, state, query, datname
FROM pg_roles, gp_toolkit.gp_resgroup_status g, pg_stat_activity
WHERE pg_roles.rolresgroup = g.groupid
AND pg_stat_activity.usename = pg_roles.rolname;
rolname | rsgname | pid | waiting | state | query | datname
---------+----------+-------+---------+--------+--------------------------+---------
sammy | rg_light | 31861 | f | idle | SELECT * FROM mytesttbl; | testdb
billy | rg_light | 31905 | t | active | SELECT * FROM topten; | testdb
SELECT pg_cancel_backend(31905);
Примечание!
Не используйте команду операционной системыKILLдля завершения любых процессов базы данных YMatrix.
Суперпользователи могут использовать функцию gp_toolkit.pg_resgroup_move_query(), чтобы переместить выполняющийся запрос из одной группы ресурсов в другую без его остановки.
Это полезно для ускорения длительных запросов путём перевода их в группу с более высокими квотами или доступными ресурсами.
Функция pg_resgroup_move_query() влияет только на указанный запрос; последующие запросы из того же сеанса остаются в исходной группе ресурсов.
Примечание!
Перемещать можно только активные (выполняющиеся) запросы. Простаивающие, ожидающие или заблокированные запросы — например, из-за ограничений параллельности или памяти — переместить нельзя.
Функция требует идентификатор процесса запроса (pid) и имя целевой группы ресурсов:
pg_resgroup_move_query(pid int4, group_name text);
Как описано в разделе об отмене транзакций, вы можете использовать представление gp_toolkit.gp_resgroup_status для получения имён, идентификаторов и статусов групп ресурсов.
После вызова pg_resgroup_move_query() выполняющийся запрос подчиняется конфигурации целевой группы ресурсов, включая ограничения параллельности и памяти:
gp_resource_group_queuing_timeout (если задано).pg_resgroup_move_query() пытается передать право владения слотом целевому процессу в течение gp_resource_group_move_timeout миллисекунд. Если передача не завершена вовремя, возвращается ошибка.После перемещения запроса нет гарантии, что суммарное потребление памяти выполняющимися запросами в целевой группе останется в пределах её MEMORY_QUOTA. В таких случаях один или несколько запросов — включая перемещённый — могут завершиться ошибкой. Чтобы минимизировать этот риск, убедитесь, что для группы ресурсов зарезервирован достаточный объём глобальной разделяемой памяти.