Berapa banyak pertanyaan per detik yang dieksekusi Postgres saya?

15

Bagaimana saya bisa tahu berapa banyak query per detik yang dieksekusi oleh database Postgres saya?

Konrad Garus
sumber
Sudahkah Anda check out: serverfault.com/questions/268506/…
@ thtsigma Tidak menjawab pertanyaan ini. Statistik kueri untuk MySQL, hanya statistik transaksi untuk PG.
1
Sudahkah Anda mencoba alat profiling Postgres, seperti pg_top ?
emallove
postgresql.org/docs/9.3/static/… misalnya pilih tup_inserted dari pg_stat_database
sivann

Jawaban:

11

Gunakan kueri ini untuk membaca jumlah total transaksi yang dieksekusi di semua database:

SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;

Jika Anda ingin penghitung yang sama hanya untuk satu database, gunakan:

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

Untuk menghitung TPS (transaksi per detik), jalankan kueri beberapa kali dan hitung selisih dari interval waktu.

Ada alat yang siap pakai untuk itu, salah satunya adalah http://bucardo.org/wiki/Check_postgres

Info lebih lanjut: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-DATABASE-VIEW


Pembaruan: Konrad mengoreksi kesalahpahaman saya tentang pertanyaannya. Tujuannya adalah untuk menghitung kueri, bukan transaksi.

Bagaimana cara menghitung kueri?

Metode 1

Gunakan contrib pg_stat_statements .

Metode 2

Aktifkan pencatatan penuh kueri untuk periode waktu yang representatif.

Untuk mengaktifkan logging penuh, untuk PostgreSQL 9.0 - 9.3, ubah pengaturan berikut di postgresql.conf

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

Jika Anda ingin melihat juga durasi query, Anda dapat mengatur log_min_duration_statement = 0 bukan dari log_statement = all. Ini sangat berguna untuk pencarian nada.

Kemudian muat ulang config (restart atau HUP) dan kumpulkan log yang cukup untuk memperkirakan lalu lintas.

Catatan: tidak ada metode yang akan menyertakan kueri yang tertanam dalam fungsi yang ditentukan pengguna.

filiprem
sumber
Saya tahu cara menghitung transaksi per detik. Pertanyaannya adalah tentang pertanyaan per detik secara khusus. Satu transaksi dapat memiliki 0 atau lebih permintaan.
Konrad Garus