Как вывести список активных подключений в PostgreSQL?

163

Есть ли в PostgreSQL команда для выбора активных подключений к данной базе данных?

psqlзаявляет, что я не могу удалить одну из своих баз данных, потому что к ней есть активные подключения , поэтому я хотел бы увидеть, какие подключения (и с каких машин)

Tregoreg
источник
Большой! ищу (плохо) и ничего не нашел. Могу ли я что-то сделать, чтобы закрыть чужое неактивное соединение?
Спикер

Ответы:

292

О, я только что нашел эту команду на форуме PostgreSQL:

SELECT * FROM pg_stat_activity;
Tregoreg
источник
15
Если вы хотите ограничить его только одной базой данных, вы можете использовать SELECT * FROM pg_stat_activity WHERE datname = 'dbname';
user2182349
1
Как я могу получить активное соединение с базой данных из определенной поддерживаемой службы?
GunasekaranR
А как насчет того, чтобы после запуска pg_terminate_backendмое приложение все еще могло выполнять запрос к базе данных, но я не мог видеть новые соединения в pg_Stat_activity?
takacsot
42

Следующее даст вам активные соединения / запросы в postgres DB-

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query
    ,state
FROM pg_stat_activity
WHERE state = 'active';

Вы можете использовать idle вместо active, чтобы получить уже выполненные соединения / запросы.

Нирадж Бансал
источник
1
Не означает, что соединение активно? Если я отключу соединение, будет ли оно отображаться как неактивное?
Шивам Кубде
1
Да, @ShivamKubde, но как «простаивающий», а приведенный выше запрос показывает только «активные» соединения, поэтому удалите WHERE ...предложение и, чтобы иметь возможность видеть, какие соединения активны или неактивны, добавьте столбец stateв SELECTпредложение
Мариано Руис,
10
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

Поскольку pg_stat_activityсодержит статистику подключений всех баз данных, имеющих какое-либо состояние, либо, idleлибо active, имя базы данных и состояние подключения должны быть включены в запрос, чтобы получить желаемый результат.

Абдолла
источник