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