Правильный запрос для получения текущего количества подключений в БД PostgreSQL

какой из следующих двух более точен?

select numbackends from pg_stat_database;

select count(*) from pg_stat_activity;

3 ответов


эти два требования не эквивалентны. Эквивалентная версия первого будет:

SELECT sum(numbackends) FROM pg_stat_database;

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

оба запроса основаны на одних и тех же данных, поэтому они будут одинаково точными.


никакие tcp-соединения вам не помогут. Помните, что это не для конкретной базы данных

netstat-a-n | find /c "127.0.0.1:13306"


глядя на исходный код, похоже, запрос pg_stat_database дает вам количество соединений к текущей базе данных для всех пользователей. С другой стороны, запрос pg_stat_activity дает количество подключений к текущей базе данных только для запрашивающего пользователя.