PostgreSQL
December 22, 2022

pgbench

Данная утилита пригодится для анализа производительности кластера PostgreSQL.

Устанавливаем в базу необходимые таблицы для работы pgbench:

pgbench -i -h rc1b-d061mg640assuadq.mdb.yandexcloud.net -p 6432 db1 -U cameda

Начинаем тест:

pgbench -c 10 -T 60 -p 6432 -h rc1b-d061mg640assuadq.mdb.yandexcloud.net db1 -U cameda

Примерный вывод:

pgbench -c 10 -T 60 -p 6432 -h rc1b-d061mg640assuadq.mdb.yandexcloud.net db1 -U cameda
Password:
pgbench (15.1 (Ubuntu 15.1-1.pgdg20.04+1), server 14.5 (Ubuntu 14.5-201-yandex.52541.9c8d2db883))
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
maximum number of tries: 1
duration: 60 s
number of transactions actually processed: 2372
number of failed transactions: 0 (0.000%)
latency average = 252.230 ms
initial connection time = 423.420 ms
tps = 39.646377 (without initial connection time)

Ориентируемся по строке tps (transaction per second).

39.646377 - это очень мало

1350 - хорошо.

Чем мощнее кластер, тем большее количество транзакций в секунду он может обработать.

Примеры:

  1. Значение 1350 (Кластер s3-c12-m48, network-ssd=32Гб, 1 хост)
  2. Значение 39.646377 (Кластер s2.small, network-ssd=60Гб, 2 хоста)
  3. Значение 180 (Кластер s3-c12-m48, local-ssd=750Гб, 3 хоста) (sycnronious_commit = off)