Skip to content

Instantly share code, notes, and snippets.

@robuye
Last active February 25, 2019 09:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robuye/5d877e662e1ee38e164e1f17663670eb to your computer and use it in GitHub Desktop.
Save robuye/5d877e662e1ee38e164e1f17663670eb to your computer and use it in GitHub Desktop.

Configuration from https://github.com/robuye/pgbench-docker with the following parameters:

DOCKER_IMAGE=postgres:11
PGBENCH_SCALE=10    # scale factor (keep it higher or equal to concurrent clients)
PGBENCH_CLIENTS=10   # clients or concurrent db sessions
PGBENCH_RATE=1000000 # 1M rate limit, number of transactions per second
PGBENCH_THREADS=8   # number of threads to run to manage connections
FSYNC ON FSYNC OFF
TMPFS ON 105k TPS 108k TPS
TMPFS OFF 15k TPS 106k TPS

FSYNC=on TMPSFS=off

make pgbench
docker-compose run --rm pgbench-init
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data...
100000 of 1000000 tuples (10%) done (elapsed 0.04 s, remaining 0.33 s)
200000 of 1000000 tuples (20%) done (elapsed 0.38 s, remaining 1.53 s)
300000 of 1000000 tuples (30%) done (elapsed 0.45 s, remaining 1.05 s)
400000 of 1000000 tuples (40%) done (elapsed 0.80 s, remaining 1.20 s)
500000 of 1000000 tuples (50%) done (elapsed 1.04 s, remaining 1.04 s)
600000 of 1000000 tuples (60%) done (elapsed 1.44 s, remaining 0.96 s)
700000 of 1000000 tuples (70%) done (elapsed 1.83 s, remaining 0.78 s)
800000 of 1000000 tuples (80%) done (elapsed 2.00 s, remaining 0.50 s)
900000 of 1000000 tuples (90%) done (elapsed 2.28 s, remaining 0.25 s)
1000000 of 1000000 tuples (100%) done (elapsed 2.85 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done.
docker-compose run --rm pgbench
scale option ignored, using count from pgbench_branches table (10)
starting vacuum...end.
progress: 1.0 s, 1653.9 tps, lat 502.351 ms stddev 285.081, lag 496.369 ms
progress: 2.0 s, 1699.0 tps, lat 1490.276 ms stddev 287.683, lag 1484.399 ms
progress: 3.0 s, 1602.0 tps, lat 2484.332 ms stddev 283.752, lag 2478.078 ms
progress: 4.0 s, 1415.0 tps, lat 3493.591 ms stddev 289.520, lag 3486.529 ms
progress: 5.0 s, 1520.0 tps, lat 4490.193 ms stddev 288.962, lag 4483.603 ms
progress: 6.0 s, 1595.0 tps, lat 5491.469 ms stddev 287.559, lag 5485.202 ms
progress: 7.0 s, 1563.0 tps, lat 6489.363 ms stddev 285.760, lag 6482.976 ms
progress: 8.0 s, 1649.0 tps, lat 7479.495 ms stddev 286.244, lag 7473.421 ms
progress: 9.0 s, 1543.0 tps, lat 8488.903 ms stddev 291.650, lag 8482.433 ms
progress: 10.0 s, 1493.1 tps, lat 9476.167 ms stddev 288.912, lag 9469.476 ms
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 8
duration: 10 s
number of transactions actually processed: 15743
latency average = 4935.078 ms
latency stddev = 2898.922 ms
rate limit schedule lag: avg 4928.725 (max 9986.801) ms
tps = 1571.565563 (including connections establishing)
tps = 1572.256637 (excluding connections establishing)
statement latencies in milliseconds:
         0.004  \set aid random(1, 100000 * :scale)
         0.001  \set bid random(1, 1 * :scale)
         0.001  \set tid random(1, 10 * :scale)
         0.001  \set delta random(-5000, 5000)
         0.104  BEGIN;
         0.263  UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
         0.174  SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
         0.504  UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
         2.025  UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
         0.159  INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
         3.124  END;

FSYNC=on TMPFS=on

make pgbench 
docker-compose run --rm pgbench-init
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data...
100000 of 1000000 tuples (10%) done (elapsed 0.04 s, remaining 0.33 s)
200000 of 1000000 tuples (20%) done (elapsed 0.10 s, remaining 0.41 s)
300000 of 1000000 tuples (30%) done (elapsed 0.17 s, remaining 0.39 s)
400000 of 1000000 tuples (40%) done (elapsed 0.23 s, remaining 0.34 s)
500000 of 1000000 tuples (50%) done (elapsed 0.29 s, remaining 0.29 s)
600000 of 1000000 tuples (60%) done (elapsed 0.37 s, remaining 0.24 s)
700000 of 1000000 tuples (70%) done (elapsed 0.42 s, remaining 0.18 s)
800000 of 1000000 tuples (80%) done (elapsed 0.48 s, remaining 0.12 s)
900000 of 1000000 tuples (90%) done (elapsed 0.55 s, remaining 0.06 s)
1000000 of 1000000 tuples (100%) done (elapsed 0.64 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done.
docker-compose run --rm pgbench
scale option ignored, using count from pgbench_branches table (10)
starting vacuum...end.
progress: 1.0 s, 10583.5 tps, lat 500.526 ms stddev 280.842, lag 499.587 ms
progress: 2.0 s, 10240.1 tps, lat 1484.578 ms stddev 283.982, lag 1483.602 ms
progress: 3.0 s, 10449.5 tps, lat 2478.003 ms stddev 283.098, lag 2477.045 ms
progress: 4.0 s, 10554.4 tps, lat 3465.153 ms stddev 284.168, lag 3464.206 ms
progress: 5.0 s, 10610.3 tps, lat 4454.335 ms stddev 284.098, lag 4453.393 ms
progress: 6.0 s, 10624.4 tps, lat 5436.349 ms stddev 283.802, lag 5435.408 ms
progress: 7.0 s, 10411.4 tps, lat 6427.036 ms stddev 284.759, lag 6426.076 ms
progress: 8.0 s, 10597.7 tps, lat 7415.141 ms stddev 284.672, lag 7414.198 ms
progress: 9.0 s, 10710.9 tps, lat 8406.022 ms stddev 284.627, lag 8405.088 ms
progress: 10.0 s, 10601.0 tps, lat 9391.235 ms stddev 286.615, lag 9390.292 ms
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 8
duration: 10 s
number of transactions actually processed: 105393
latency average = 4964.002 ms
latency stddev = 2852.626 ms
rate limit schedule lag: avg 4963.053 (max 9915.371) ms
tps = 10528.492103 (including connections establishing)
tps = 10532.527223 (excluding connections establishing)
statement latencies in milliseconds:
         0.002  \set aid random(1, 100000 * :scale)
         0.000  \set bid random(1, 1 * :scale)
         0.000  \set tid random(1, 10 * :scale)
         0.000  \set delta random(-5000, 5000)
         0.076  BEGIN;
         0.154  UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
         0.126  SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
         0.166  UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
         0.216  UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
         0.115  INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
         0.093  END;

FSYNC=off TMPFS=on

make pgbench 
docker-compose run --rm pgbench-init
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data...
100000 of 1000000 tuples (10%) done (elapsed 0.03 s, remaining 0.30 s)
200000 of 1000000 tuples (20%) done (elapsed 0.09 s, remaining 0.38 s)
300000 of 1000000 tuples (30%) done (elapsed 0.15 s, remaining 0.35 s)
400000 of 1000000 tuples (40%) done (elapsed 0.23 s, remaining 0.34 s)
500000 of 1000000 tuples (50%) done (elapsed 0.29 s, remaining 0.29 s)
600000 of 1000000 tuples (60%) done (elapsed 0.35 s, remaining 0.23 s)
700000 of 1000000 tuples (70%) done (elapsed 0.41 s, remaining 0.18 s)
800000 of 1000000 tuples (80%) done (elapsed 0.47 s, remaining 0.12 s)
900000 of 1000000 tuples (90%) done (elapsed 0.54 s, remaining 0.06 s)
1000000 of 1000000 tuples (100%) done (elapsed 0.61 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done.
docker-compose run --rm pgbench
scale option ignored, using count from pgbench_branches table (10)
starting vacuum...end.
progress: 1.0 s, 11063.8 tps, lat 492.874 ms stddev 281.199, lag 491.977 ms
progress: 2.0 s, 10755.0 tps, lat 1493.302 ms stddev 280.956, lag 1492.373 ms
progress: 3.0 s, 10669.4 tps, lat 2473.714 ms stddev 281.199, lag 2472.775 ms
progress: 4.0 s, 10618.2 tps, lat 3470.414 ms stddev 280.052, lag 3469.473 ms
progress: 5.0 s, 10697.2 tps, lat 4454.444 ms stddev 283.410, lag 4453.511 ms
progress: 6.0 s, 10898.4 tps, lat 5441.811 ms stddev 283.553, lag 5440.892 ms
progress: 7.0 s, 10832.7 tps, lat 6431.621 ms stddev 283.384, lag 6430.698 ms
progress: 8.0 s, 10868.5 tps, lat 7418.238 ms stddev 283.366, lag 7417.318 ms
progress: 9.0 s, 10824.4 tps, lat 8403.506 ms stddev 284.817, lag 8402.583 ms
progress: 10.0 s, 10854.2 tps, lat 9392.770 ms stddev 286.746, lag 9391.848 ms
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 8
duration: 10 s
number of transactions actually processed: 108091
latency average = 4949.518 ms
latency stddev = 2860.491 ms
rate limit schedule lag: avg 4948.593 (max 9912.766) ms
tps = 10802.724591 (including connections establishing)
tps = 10807.667635 (excluding connections establishing)
statement latencies in milliseconds:
         0.002  \set aid random(1, 100000 * :scale)
         0.000  \set bid random(1, 1 * :scale)
         0.000  \set tid random(1, 10 * :scale)
         0.000  \set delta random(-5000, 5000)
         0.077  BEGIN;
         0.151  UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
         0.125  SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
         0.163  UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
         0.201  UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
         0.114  INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
         0.092  END;

FSYNC=off TMPFS=off

make pgbench
docker-compose run --rm pgbench-init
dropping old tables...
creating tables...
generating data...
100000 of 1000000 tuples (10%) done (elapsed 0.03 s, remaining 0.23 s)
200000 of 1000000 tuples (20%) done (elapsed 0.09 s, remaining 0.36 s)
300000 of 1000000 tuples (30%) done (elapsed 0.17 s, remaining 0.39 s)
400000 of 1000000 tuples (40%) done (elapsed 0.24 s, remaining 0.36 s)
500000 of 1000000 tuples (50%) done (elapsed 0.31 s, remaining 0.31 s)
600000 of 1000000 tuples (60%) done (elapsed 0.38 s, remaining 0.25 s)
700000 of 1000000 tuples (70%) done (elapsed 0.46 s, remaining 0.20 s)
800000 of 1000000 tuples (80%) done (elapsed 0.53 s, remaining 0.13 s)
900000 of 1000000 tuples (90%) done (elapsed 0.59 s, remaining 0.07 s)
1000000 of 1000000 tuples (100%) done (elapsed 0.67 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done.
docker-compose run --rm pgbench
scale option ignored, using count from pgbench_branches table (10)
starting vacuum...end.
progress: 1.0 s, 10978.3 tps, lat 501.784 ms stddev 280.625, lag 500.878 ms
progress: 2.0 s, 10832.2 tps, lat 1487.371 ms stddev 284.248, lag 1486.448 ms
progress: 3.0 s, 10948.3 tps, lat 2473.324 ms stddev 283.582, lag 2472.410 ms
progress: 4.0 s, 10942.8 tps, lat 3464.356 ms stddev 284.666, lag 3463.442 ms
progress: 5.0 s, 10938.9 tps, lat 4449.540 ms stddev 283.338, lag 4448.626 ms
progress: 6.0 s, 10353.6 tps, lat 5440.983 ms stddev 284.103, lag 5440.018 ms
progress: 7.0 s, 10556.4 tps, lat 6427.211 ms stddev 284.851, lag 6426.263 ms
progress: 8.0 s, 10572.8 tps, lat 7413.134 ms stddev 285.477, lag 7412.188 ms
progress: 9.0 s, 9879.5 tps, lat 8401.647 ms stddev 290.344, lag 8400.635 ms
progress: 10.0 s, 10830.8 tps, lat 9394.264 ms stddev 284.959, lag 9393.341 ms
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 8
duration: 10 s
number of transactions actually processed: 106843
latency average = 4892.042 ms
latency stddev = 2855.144 ms
rate limit schedule lag: avg 4891.107 (max 9916.802) ms
tps = 10676.747089 (including connections establishing)
tps = 10680.439803 (excluding connections establishing)
statement latencies in milliseconds:
         0.002  \set aid random(1, 100000 * :scale)
         0.000  \set bid random(1, 1 * :scale)
         0.000  \set tid random(1, 10 * :scale)
         0.000  \set delta random(-5000, 5000)
         0.076  BEGIN;
         0.152  UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
         0.127  SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
         0.156  UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
         0.214  UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
         0.113  INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
         0.095  END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment