Wie viele Abfragen pro Sekunde führt mein Postgres aus?

15

Wie kann ich feststellen, wie viele Abfragen pro Sekunde meine Postgres-Datenbank ausführt?

Konrad Garus
quelle
Haben Sie ausgecheckt
@thtsigma Beantwortet diese Frage nicht. Fragt Statistiken für MySQL ab, nur Transaktionsstatistiken für PG.
1
Haben Sie schon Postgres-Profiling-Tools wie pg_top ausprobiert ?
Emallove
postgresql.org/docs/9.3/static/… zB select tup_inserted from pg_stat_database
sivann

Antworten:

11

Verwenden Sie diese Abfrage, um die Gesamtzahl der in allen Datenbanken ausgeführten Transaktionen zu lesen :

SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;

Wenn Sie denselben Leistungsindikator für nur eine Datenbank möchten, verwenden Sie:

SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';

Um TPS (Transaktionen pro Sekunde) zu berechnen, führen Sie die Abfrage mehrmals aus und berechnen Sie die Differenz über das Zeitintervall.

Dafür gibt es fertige Tools, eines davon ist http://bucardo.org/wiki/Check_postgres

Weitere Informationen: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW


Update: Konrad hat mein Missverständnis seiner Frage korrigiert. Das Ziel war, Abfragen zu zählen, keine Transaktionen.

Wie werden Abfragen gezählt?

Methode 1

Verwenden Sie pg_stat_statements contrib.

Methode 2

Aktivieren Sie die vollständige Protokollierung von Abfragen für einen repräsentativen Zeitraum.

Um die vollständige Protokollierung für PostgreSQL 9.0 - 9.3 zu aktivieren, ändern Sie die folgenden Einstellungen in postgresql.conf

logging_collector = on
log_line_prefix = '%t '
log_rotation_size = 1GB
log_statement = all

Wenn Sie auch Abfrage Dauer sehen möchten, können Sie einstellen , log_min_duration_statement = 0 statt der log_statement = all. Dies ist sehr nützlich für die Abfrageoptimierung.

Laden Sie dann die Konfiguration neu (Neustart oder HUP) und sammeln Sie genügend Protokolle, um den Datenverkehr abzuschätzen.

Hinweis: Keine der Methoden enthält Abfragen, die in benutzerdefinierte Funktionen eingebettet sind.

filiprem
quelle
Ich kann Transaktionen pro Sekunde berechnen. Die Frage bezieht sich speziell auf Abfragen pro Sekunde. Eine Transaktion kann 0 oder mehr Abfragen enthalten.
Konrad Garus