¿Qué es pgbench y para qué sirve?
En ocasiones, realizamos cambios de configuración en la base de datos y nos gustaría saber si estos cambios han sido positivos o negativos en nuestra base de datos. Para poder realizar pruebas de rendimiento, o bien nos creamos una aplicación para realizar nuestras propias pruebas o utilizamos algunas de las herramientas existentes, como puede ser pgbench.
Pgbench es un programa simple que sirve para ejecutar pruebas de rendimiento en términos de cuántas transacciones por segundo puede realizar una Base de Datos de PostgreSQL ( TPC-B ) . Ejecuta la misma sentencia de SQL una y otra vez, y calcula la tasa de transacción media (transacciones por segundo).
¿Dónde podemos encontrar pgbench?
Se encuentra dentro de la instalación básica de PostgreSQL (no es necesario el paquete contrib).
¿Qué incluye este programa?
Por defecto el scripts incorporado emite siete comando por transacción elegidos de manera aleatoria de una lista especificada. Estos comando son los siguientes:
BEGIN;
UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
END;
Se incorporan tres modelos de scripts:
- tpcb-like: es el que usa por defecto.
- simple-update: este scripts no incluye en la transación los pasos 4 y 5.
- select-only: ejecuta solo consultas.
Además, soporta scripts personalizados.
Utiliza tres protocolos para enviar consultas al servidor:
Opciones
Existe diferentes opciones para modificar el número de clientes, la escala, las transacciones, entre otras.
Ejemplo de pgbench
En este ejemplo se ejecuta el scripts por defecto.
10 cliente que realizan 10 transacciones, por lo que tenemos 100 transacciones totales.
El número de transacciones por segundos calculadas incluyendo el tiempo de conexiones es de 579.
El número de transacciones por segundos calculadas excluyendo el tiempo de conexiones es de 588.
Conclusión
Con esta herramienta podemos ver hasta donde puede llegar a soportar nuestras bases de datos, realizando paso a paso diferentes pruebas de benchmark. Para más información de cómo se utiliza esta herramienta, visita la página oficial de PostgreSQL.