Πώς κάνουμε Performance Testing στη PostgreSQL με το pgbench

- Πώς μπορούμε να παρακολουθούμε με ένα report το performance (τύπου Oracle AWR) στη PostgreSQL με το pg_profile extension - 5 Οκτώβριος 2026
- Πώς ενεργοποιούμε το Object και Session level Auditing σε PostgreSQL - 28 Σεπτέμβριος 2026
- Πώς κάνουμε upgrade PostgreSQL σε νεότερη έκδοση - 23 Σεπτέμβριος 2026
Το pgbench είναι ένα από τα πιο χρήσιμα εργαλεία της PostgreSQL. Χρησιμοποιείται για benchmarking και stress testing της βάσης δεδομένων, προσομοιώνοντας πολλαπλά ταυτόχρονα transactions (TPS).
Σε αυτό το άρθρο θα δούμε πώς μπορούμε να το στήσουμε, να τρέξουμε τα πρώτα μας benchmarks και να αξιοποιήσουμε προσαρμοσμένα scripts για πιο ρεαλιστικά σενάρια.
Η εγκατάσταση
Πριν τρέξουμε οποιοδήποτε test, το pgbench χρειάζεται να δημιουργήσει έναν τυπικό αριθμό πινάκων. Για να γίνει αυτό τρέχουμε την παρακάτω εντολή απο το τερματικό αφού πρώτα συνδεθούμε με τον χρήστη postgres:
su postgres pgbench -i -s 10 db_test
-i: Δηλώνει την εντολή initialize.-s 10: Ορίζει τον scale factor. Ένα scale factor 1 δημιουργεί 100.000 rows στους βασικούς πίνακες. Με το 10 θα δημιουργηθούν περίπου 1 εκατομμύριο γραμμές στον πίνακαpgbench_accounts, αυξάνοντας το μέγεθος της βάσης για πιο αντιπροσωπευτικά αποτελέσματα.
Μετά την ολοκλήρωση, βλέπουμε τέσσερις νέους πίνακες: pgbench_accounts, pgbench_branches, pgbench_history, και pgbench_tellers.
Εκτέλεση του Standard Benchmark
Αφού η βάση δεδομένων είναι έτοιμη, μπορούμε να εκτελέσουμε ένα βασικό τεστ απόδοσης. Ας υποθέσουμε ότι θέλουμε να δοκιμήσουμε με 50 ταυτόχρονους clients (-c), χρησιμοποιώντας 2 threads (-j), για συνολικό χρόνο 60 δευτερολέπτων (-T):
pgbench -c 50 -j 2 -T 60 db_test
-c clients: Ο αριθμός clients που συνδέονται ταυτόχρονα.-j threads: Ο αριθμός worker threads που θα χρησιμοποιηθούν στο λειτουργικό (καλό είναι να ταιριάζει με τους διαθέσιμους πυρήνες CPU).-T seconds: Η διάρκεια του τεστ σε δευτερόλεπτα. Εναλλακτικά, αντί για χρόνο, μπορείτε να ορίσετε συγκεκριμένο αριθμό συναλλαγών ανά client με την παράμετρο-t.
Τα αποτελέσματα
Μετά το τέλος του test, το pgbench εμφανίζει μία αναφορά:

- TPS (Transactions Per Second): Ο σημαντικότερος δείκτης απόδοσης. Δείχνει πόσες συναλλαγές ολοκληρώθηκαν ανά δευτερόλεπτο.
- Latency Average: Ο μέσος χρόνος που χρειάστηκε για να ολοκληρωθεί μια συναλλαγή.
Χρήση Custom Scripts
Το standard benchmark είναι καλό για γενικούς ελέγχους CPU και Ι/Ο αλλά σπάνια ταιριάζει ακριβώς στα queries της δικιάς μας εφαρμογής, το pgbench επιτρέπει να τρέξουμε τα δικά μας custom sql scripts.
Δημιουργήστε ένα αρχείο, π.χ. custom_workload.sql:
\set aid random(1, 100000 * 10) SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
Τρέξτε το benchmark χρησιμοποιώντας το αρχείο σας με την παράμετρο -f:
pgbench -c 20 -T 30 -f custom_workload.sql db_test

Κλείνοντας να πούμε ότι το pgbench είναι ένα εξαιρετικά ελαφρύ και ισχυρό εργαλείο. Μας επιτρέπει να μετρήσουμε γρήγορα την απόδοση της υποδομής μας, να δοκιμάσουμε αλλαγές στο postgresql.conf όπως shared_buffers, effective_cache_size, work_mem και να αξιολογήσουμε τη συμπεριφορά της βάσης δεδομένων υπό πίεση πριν περάσουμε σε περιβάλλοντα παραγωγής.

