Управление клиентскими процессами и сессиями пользователей
Yandex MPP Analytics for PostgreSQL запускает новый внутренний процесс для каждого клиентского подключения. Пользователь-администратор или другой пользователь с ролью mdb_admin может:
Получить список процессов
Запросы для получения списка процессов различаются для Greenplum® и Apache Cloudberry™. В Greenplum® используется поле waiting, а в Apache Cloudberry™ — поля wait_event_type и wait_event.
Подробнее о доступных СУБД в Yandex MPP Analytics for PostgreSQL.
Чтобы получить список процессов, включая пользовательские запросы, выполните запрос к функции mdb_toolkit.pg_stat_activity():
SELECT usename, pid, waiting, state, query, datname
FROM mdb_toolkit.pg_stat_activity();
Результат:
usename | pid | waiting | state | query | datname
---------+----------+---------+--------+------------------------+---------
sammy | 31861 | f | idle | SELECT * FROM testtbl; | testdb
billy | 31905 | t | active | SELECT * FROM topten; | testdb
Где:
-
usename— имя пользователя. -
pid— идентификатор процесса. -
waiting— процесс ожидает транзакцию:t— да.f— нет.
-
state— состояние процесса:active— действующий.idle— бездействующий.
-
query— запрос. -
datname— имя базы данных.
Чтобы получить список процессов, включая пользовательские запросы, выполните запрос к функции mdb_toolkit.pg_stat_activity():
SELECT usename, pid, wait_event_type, wait_event, state, query, datname
FROM mdb_toolkit.pg_stat_activity();
Результат:
usename | pid | wait_event_type | wait_event | state | query | datname
---------+----------+-----------------+------------+--------+--------------------------------+---------
user1 | 1798921 | Timeout | PgSleep | active | SELECT pg_sleep(25); | mydb
user2 | 1798938 | Lock | advisory | active | SELECT pg_advisory_lock(1234); | mydb
Где:
-
usename— имя пользователя. -
pid— идентификатор процесса. -
wait_event_type— тип события, которое ожидается бэкендом. При значенииNULLбэкенд не ожидает события. -
wait_event— имя события, которое ожидается бэкендом. При значенииNULLбэкенд не ожидает события. -
state— состояние процесса:active— действующий.idle— бездействующий.
-
query— запрос. -
datname— имя базы данных.
Подробнее о полях представления pg_stat_activity читайте в документации Apache Cloudberry™
Управлять нагрузкой
-
Выполните запрос к конфигурационному файлу
gp_toolkit.gp_resgroup_config, чтобы получить название ресурсной группы и узнать текущее количество параллельных транзакций:SELECT groupname, concurrency FROM gp_toolkit.gp_resgroup_config; -
Установите количество параллельных транзакций для ресурсной группы:
ALTER RESOURCE GROUP <имя_ресурсной_группы> SET concurrency <количество_параллельных_транзакций>;
Отменить сессию пользователя
Вы можете отменить сессию пользователя одним из следующих способов:
- Завершить процесс с сессией.
- Завершить соединение с базой данных.
- Завершить все пользовательские сессии.
Завершить определенный процесс
Выполните запрос к функции mdb_toolkit.gp_cancel_backend():
SELECT *
FROM mdb_toolkit.gp_cancel_backend(<идентификатор_процесса>);
Идентификатор процесса можно получить со списком процессов в кластере.
Завершить соединение с базой данных
Выполните запрос к функции mdb_toolkit.gp_terminate_backend():
SELECT *
FROM mdb_toolkit.gp_terminate_backend(<идентификатор_процесса>);
Идентификатор процесса можно получить со списком процессов в кластере.
Завершить все пользовательские сессии
Чтобы завершить все пользовательские сессии в кластере, выполните запрос к функции mdb_toolkit.terminate_all_user_backends():
SELECT *
FROM mdb_toolkit.terminate_all_user_backends();
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.
Apache® и Apache Cloudberry™ являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах.