2011-03-11 10 views

Odpowiedz

124

Te dwa wymagania nie są równoważne. Równowartość wersja pierwszego byłoby:

SELECT sum(numbackends) FROM pg_stat_database; 

W takim przypadku należałoby się spodziewać, że wersja będzie nieco szybciej niż drugi, po prostu dlatego, że ma mniej wierszy liczyć. Ale prawdopodobnie nie będziesz w stanie zmierzyć różnicy.

Oba zapytania są oparte na dokładnie tych samych danych, więc będą równie dokładne.

-3

Od patrząc na kod źródłowy, wydaje się, że zapytanie pg_stat_database daje liczbę połączeń do aktualnej bazy danych dla wszystkich użytkowników. Z drugiej strony, zapytanie pg_stat_activity podaje liczbę połączeń z bieżącą bazą danych tylko dla użytkownika zapytującego.

+1

To nieprawda. pg_stat_activity daje również wszystkie połączenia, niezależnie od użytkownika. Następnie daje pole, które mówi, który to jest użytkownik, że możesz filtrować, jeśli chcesz. Nie dostarczysz * tekstu zapytania *, jeśli nie jesteś tym samym użytkownikiem lub superużytkownikiem, ale nadal będzie on wyświetlał połączenie. –

+3

Masz rację. Nie patrzyłem wystarczająco dokładnie na definicję widoku. Ograniczenie userid dotyczy tylko sprzężenia przed pg_authid. Mój błąd. –

2

Pomoże Ci w tym wiele połączeń TCP. Pamiętaj, że nie jest to dla konkretnej bazy danych:

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

Powiązane problemy