Jak mogę określić, ile zapytań na sekundę wykonuje moja baza danych Postgres?
Jak mogę określić, ile zapytań na sekundę wykonuje moja baza danych Postgres?
Odpowiedzi:
Użyj tego zapytania, aby odczytać całkowitą liczbę transakcji wykonanych we wszystkich bazach danych:
SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;
Jeśli chcesz mieć ten sam licznik tylko dla jednej bazy danych, użyj:
SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';
Aby obliczyć TPS (transakcje na sekundę), uruchom zapytanie kilka razy i oblicz różnicę w przedziale czasu.
Istnieją gotowe narzędzia do tego, jednym z nich jest http://bucardo.org/wiki/Check_postgres
Więcej informacji: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW
Aktualizacja: Konrad poprawił moje niezrozumienie swojego pytania. Celem było zliczanie zapytań, a nie transakcji.
Jak liczyć zapytania?
Metoda 1
Użyj pg_stat_statements contrib.
Metoda 2
Włącz pełne rejestrowanie zapytań w reprezentatywnym okresie.
Aby włączyć pełne logowanie, w PostgreSQL 9.0 - 9.3 zmień następujące ustawienia w postgresql.conf
logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all
Jeśli chcesz zobaczyć również czas zapytań, można ustawić log_min_duration_statement = 0
zamiast od log_statement = all
. Jest to bardzo przydatne do dostrajania zapytań.
Następnie ponownie załaduj config (restart lub HUP) i zbierz wystarczającą ilość dziennika, aby oszacować ruch.
Uwaga: żadna metoda nie będzie zawierać zapytań osadzonych w funkcjach zdefiniowanych przez użytkownika.