Bagaimana saya bisa tahu berapa banyak query per detik yang dieksekusi oleh database Postgres saya?
Bagaimana saya bisa tahu berapa banyak query per detik yang dieksekusi oleh database Postgres saya?
Jawaban:
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.