PostgreSQL : dans mon pgbench, bench, bench…
Pgbench est un outil fort utile pour tout DBA qui tâte un jour à PostgreSQL. Il s’agit d’un logiciel de benchmarking vous donnant le temps mis par l’exécution de transactions sur le moteur de données Open Source. La commande appartient au paquet postgresql96, qui est installé lorsque vous installez les binaires du paquet postgresql96-server :
# S'il est installé sur votre système rpm -ql postgresql96|grep pgbench # Interroge les dépôts et nécessite le paquet yum-utils repoquery -l postgresql96|grep pgbench
Pgbench est fourni en standard dans l’installeur PostgreSQL sur Windows.
Création de la base pgbench
Avant de pouvoir faire vos tests, pgbench a besoin que vous créiez une base de données. Dans l’exemple ci-dessous, je l’ai appelé pgbench !
sudo -u postgres /usr/pgsql-9.6/bin/psql -c "CREATE DATABASE pgbench" sudo -u postgres /usr/pgsql-9.6/bin/pgbench -i pgbench
Trois types de benchmarks
J’ai pris le parti de fixer le nombre de connexions à 10 (-c 10), le nombre de jobs à 2 (-j 2) et le nombre de transactions à 100 (-t 100), en effectuant un vacuum avant l’exécution des instructions (-v).
Il existe trois types de test :
- tpbc-like, qui réalise des instructions SELECT, UPDATE, INSERT
- simple-update, qui se contente d’effectuer des UPDATE
- select-only, pour exécuter des ordres SELECT
Les données du benchmark sont exprimés en tps, i.e. en transactions par secondes.
sudo -u postgres /usr/pgsql-9.6/bin/pgbench -b tpcb-like -c 10 -j 2 -t 100 -v pgbench sudo -u postgres /usr/pgsql-9.6/bin/pgbench -b simple-update -c 10 -j 2 -t 100 -v pgbench sudo -u postgres /usr/pgsql-9.6/bin/pgbench -b select-only -c 10 -j 2 -t 100 -v pgbench
Les indicateurs obtenus
Les temps et le nombre de transactions figurant dans le tableau ci-dessous sont ceux obtenus à la 2e exécution de la commande.
tpcb-like | simple-update | select-only | |
latency average | 132.143 ms | 11.274 ms | 0.477 ms |
including connections establishing |
75.675594 tps | 887.032822 tps | 20942.408377 tps |
excluding connections establishing |
75.685132 tps | 888.507107 tps | 22192.927558 tps |