Które z poniższych dwóch jest dokładniejsze?
select numbackends from pg_stat_database;
select count(*) from pg_stat_activity;
sql
database
postgresql
dbconnection
Murali VP
źródło
źródło
Odpowiedzi:
Te dwa wymagania nie są równoważne. Równoważna wersja pierwszego byłaby:
W takim przypadku spodziewałbym się, że ta wersja będzie nieco szybsza niż druga, po prostu dlatego, że ma mniej wierszy do policzenia. Ale prawdopodobnie nie będziesz w stanie zmierzyć różnicy.
Oba zapytania opierają się na dokładnie tych samych danych, więc będą równie dokładne.
źródło
Poniższe zapytanie jest bardzo pomocne
źródło
Zdecydowanie mogą dać inne rezultaty. Lepszy jest
Dzieje się tak, ponieważ zawiera połączenia z procesami nadawcy WAL, które są traktowane jako zwykłe połączenia i liczą się do
max_connections
.Zobacz max_wal_senders
źródło
Agregacja wszystkich sesji postgres według ich statusu (ile jest bezczynnych, ile robi coś ...)
źródło
Liczba połączeń TCP pomoże Ci. Pamiętaj, że nie dotyczy to konkretnej bazy danych
źródło
Patrząc na kod źródłowy, wygląda na to, że zapytanie pg_stat_database podaje liczbę połączeń z bieżącą bazą danych dla wszystkich użytkowników. Z drugiej strony zapytanie pg_stat_activity podaje liczbę połączeń do bieżącej bazy danych tylko dla odpytującego użytkownika.
źródło