2011-03-11 4 views
79

다음 중 정확도가 더 높은 것은? pg_stat_database 쿼리는 당신에게 모든 사용자에 대한 현재 데이터베이스 연결의 수를 제공합니다 같은 소스 코드를 찾고에서PostgreSQL DB에서 현재 연결 수를 얻기위한 올바른 쿼리

select numbackends from pg_stat_database; 

select count(*) from pg_stat_activity; 
+3

더 나은 점은 무엇입니까? –

+1

정확도면에서 더 우수합니다. –

답변

124

필요한 두 개는 동일하지 않습니다. 첫 번째의 해당 버전은 다음과 같습니다

이 경우
SELECT sum(numbackends) FROM pg_stat_database; 

, 나는 그것을 계산하는 적은 수의 행이 간단하기 때문에, 해당 버전이 두 번째보다 약간 빠를 것으로 예상한다. 하지만 차이를 측정 할 수는 없을 것입니다.

두 쿼리는 정확히 동일한 데이터를 기반으로하므로 정확합니다.

-3

, 그것은 보인다. 반면, pg_stat_activity 쿼리는 쿼리하는 사용자에 대해서만 현재 데이터베이스에 대한 연결 수를 제공합니다.

+1

올바르지 않습니다. pg_stat_activity는 사용자와 상관없이 모든 연결을 제공합니다. 그런 다음 원하는 사용자인지 필터링 할 수있는 필드를 제공합니다. 동일한 사용자 또는 수퍼 유저가 아니지만 여전히 연결을 표시하는 경우 * 쿼리 텍스트를 제공하지 않습니다. –

+3

네 말이 맞아. 저는 뷰 정의를 자세히 보지 않았습니다. 사용자 ID에 대한 제한은 pg_authid에 대한 조인에만 해당됩니다. 내 실수. –

2

아무 tcp 연결도 도움이 될 것입니다. 특정 데이터베이스가 아닌 것을 기억하십시오.

netstat -a -n | 찾기/c "127.0.0.1:13306"

관련 문제