LINUX.ORG.RU
решено ФорумAdmin

Убить несколько сессий в postgres одним запросом

 


0

1

Привет.

Как убить сразу несколько сессий в postgres одним запросом? Запросы нужно перечислять списком (вариант where datname='my_db' не подходит).

Сейчас я делаю так:

select pg_terminate_backend(pid) from pg_stat_activity where pid in  (19215,19216,19244);

Но мне кажется, это некрасиво и слишком громоздко. Как сделать красиво и элегантно?

★★★

Можно вместо «from pg_stat_activity» написать массив или конструктор values, но будет не на много элегантней, более того, подсмотр в pg_stat_activity — лучше, так как уменьшает время гонки проверяя что убиваемая сессия всё ещё существует.

anonymous
()

Но мне кажется, это некрасиво и слишком громоздко.

Нормально.

AnDoR ★★★★★
()
select pg_terminate_backend(pid)
from (values (19215), (19216), (19244)) as pids (pid)
Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
pg-terminate () {
        psql -Xc "select pg_terminate_backend(pid) from pg_stat_activity where usename='$1';"
}
disarmer ★★★
()

все свое время сисадминства, убивал сессии постгреса через kill в баше, это было и красиво и элегантно...и к стати сам постгрес был не против)))

anonymous2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.