programing

Postgre의 현재 연결 수를 가져오는 오른쪽 쿼리SQL DB

easyjava 2023. 5. 29. 21:53
반응형

Postgre의 현재 연결 수를 가져오는 오른쪽 쿼리SQL DB

다음 중 어느 것이 더 정확합니까?

select numbackends from pg_stat_database;

select count(*) from pg_stat_activity;

이 두 가지 요구 사항은 동등하지 않습니다.첫 번째 버전과 동등한 버전은 다음과 같습니다.

SELECT sum(numbackends) FROM pg_stat_database;

그런 경우에는 단순히 카운트할 행이 적기 때문에 해당 버전이 두 번째 버전보다 약간 빠를 것으로 예상합니다.그러나 차이를 측정할 수 없을 가능성이 높습니다.

두 쿼리 모두 정확하게 동일한 데이터를 기반으로 하므로 정확도가 동일합니다.

다음 쿼리는 매우 유용합니다.

select  * from
(select count(*) used from pg_stat_activity) q1,
(select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) q2,
(select setting::int max_conn from pg_settings where name=$$max_connections$$) q3;

그들은 분명히 다른 결과를 줄 수 있습니다.더 좋은 것은

select count(*) from pg_stat_activity;

일반적인 연결로 처리되고 다음으로 계산되는 WAL 보낸 사람 프로세스에 대한 연결이 포함되어 있기 때문입니다.max_connections.

max_wal_sender 참조

상태별 모든 사후 세션 집계(유휴 세션 수, 수행 중인 세션 수...)

select state, count(*) from pg_stat_activity  where pid <> pg_backend_pid() group by 1 order by 1;

소스 코드를 보면 pg_stat_database 쿼리는 모든 사용자에 대해 현재 데이터베이스에 대한 연결 수를 제공하는 것 같습니다.반면에 pg_stat_activity 쿼리는 쿼리 사용자에 대해서만 현재 데이터베이스에 대한 연결 수를 제공합니다.

언급URL : https://stackoverflow.com/questions/5267715/right-query-to-get-the-current-number-of-connections-in-a-postgresql-db

반응형