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


какой из двух является более точным?

select numbackends from pg_stat_database;

select count(*) from pg_stat_activity;
3 91

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 дает число соединений к текущей базе данных только для выполнения запросов пользователей.