Skip to main content

Load-test your database without building or tuning the bench

Point Stroppy at your database, or let Stroppy Cloud bring up a fresh one, tune it, run the test and hand you a report you can share.

or run it locally →

7 engines · 31 versions · 17 topologies, every result reproducible

  • PostgreSQL
  • OrioleDB
  • MySQL
  • MariaDB
  • Picodata
  • YDB
  • CockroachDB

Runs other people can check

Each row is a run published from Stroppy Cloud, with the workload, the database and its version, and the machines it ran on. Filter by any of them; a row opens the full report with every metric of that run.

Loading the leaderboard…

Which databases really speak the protocol they claim

Each one measured check by check against the original: PostgreSQL, MySQL, MongoDB, Elasticsearch.

  • Works the same
  • Differs
  • Refused
  • Breaks
  • Not measured
Types
PostgreSQLScoreConnection and authQuery flowsErrors, cancel and pipelineSession and noticesNumbersText and binaryDate and timeStructuredSpecialType contractBulk load
Referencepostgres-13 to postgres-18the originalWorks the same, 86 of 86 checks matchedWorks the same, 72 of 72 checks matchedWorks the same, 60 of 60 checks matchedWorks the same, 36 of 36 checks matchedWorks the same, 96 of 96 checks matchedWorks the same, 66 of 66 checks matchedWorks the same, 96 of 96 checks matchedWorks the same, 522 of 522 checks matchedWorks the same, 246 of 246 checks matchedWorks the same, 2004 of 2004 checks matchedWorks the same, 4380 of 4380 checks matched
alloydb-omni98.9Refused, 11 of 12 checks matchedWorks the same, 12 of 12 checks matchedWorks the same, 10 of 10 checks matchedWorks the same, 6 of 6 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 11 of 11 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 87 of 87 checks matchedWorks the same, 41 of 41 checks matchedWorks the same, 334 of 334 checks matchedWorks the same, 735 of 735 checks matched
cloudberry98.7Refused, 11 of 12 checks matchedWorks the same, 12 of 12 checks matchedWorks the same, 10 of 10 checks matchedWorks the same, 6 of 6 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 11 of 11 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 87 of 87 checks matchedDiffers, 40 of 41 checks matchedWorks the same, 332 of 332 checks matchedDiffers, 722 of 727 checks matched
yugabytedb97.7Refused, 11 of 12 checks matchedWorks the same, 12 of 12 checks matchedWorks the same, 10 of 10 checks matchedRefused, 5 of 6 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 11 of 11 checks matchedWorks the same, 16 of 16 checks matchedDiffers, 86 of 87 checks matchedWorks the same, 41 of 41 checks matchedWorks the same, 334 of 334 checks matchedDiffers, 732 of 733 checks matched
pgbouncer91.3Differs, 9 of 12 checks matchedBreaks, 11 of 12 checks matchedBreaks, 8 of 10 checks matchedDiffers, 4 of 6 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 11 of 11 checks matchedWorks the same, 16 of 16 checks matchedWorks the same, 87 of 87 checks matchedWorks the same, 41 of 41 checks matchedWorks the same, 334 of 334 checks matchedDiffers, 736 of 737 checks matched
cockroachdb68.2Breaks, 7 of 15 checks matchedDiffers, 11 of 12 checks matchedRefused, 9 of 10 checks matchedDiffers, 1 of 6 checks matchedDiffers, 13 of 16 checks matchedDiffers, 8 of 11 checks matchedDiffers, 9 of 16 checks matchedBreaks, 24 of 81 checks matchedDiffers, 7 of 41 checks matchedDiffers, 87 of 89 checks matchedBreaks, 281 of 332 checks matched
Open the compatibility mapThe five best of 20 PostgreSQL engines. Dataset 45a7361f915b.

Prefer the terminal?

Stroppy CLI is open source and runs against any database it has a driver for: one Go binary with the workloads, the drivers and the report inside. Hover a note to see which part of the run it’s about.

curl -fsSL https://github.com/stroppy-io/stroppy/releases/latest/download/stroppy_linux_amd64.tar.gz | tar -xz
sudo install stroppy /usr/local/bin/

It’s one file, about 40 MB, and the archive has nothing else in it. Docker and building from source are covered in the introduction.

~/bench
$ stroppy run tpcb/tx -d pg -D url=postgres://localhost/bench --executor constant-vus --vus 8 --duration 30s
19:08:49.103  INFO  End of 'create_schema' step (took 24ms)
19:08:49.236  INFO  End of 'load_data' step (took 132ms)
19:08:49.553  INFO  End of 'analyze' step (took 262ms)

=== bench summary ===
  transactions_total                       5603.000
  failed_iterations_total                  0.000
  tx_total_duration
    count=5603 avg=42.767 p(50)~=50.000 p(90)~=100.000 p(95)~=100.000 p(99)~=250.000
  tx_commits_total                         5603.000
  tps                                      186.530
  queries_per_second                       932.648
  measurement_seconds                      30.038
Real output from Stroppy 6.1.1 against PostgreSQL 17 in Docker, trimmed to the lines the notes talk about.

What you ask for

What you get back

How fast the client is, and why it matters

Every number a load generator reports includes the load generator. If the client is slow, the database waits and you end up measuring the tool. stroppy baseline shows how much room it leaves on your machine.

go-tpc → StroppyTPC-C on OrioleDB, one hour, 1000 warehouses, 100 VUs, Stroppy 5.7.2. How we found it
× go-tpc
go-tpc → tpcc/procs: 6,399 transactions per second before, 15,791 after, 2.5 times as many.
v5 on k6 → v6Medians of five runs on one AMD EPYC Genoa VM. Big on the noop driver, small on a real database, which is how it should be. Why we dropped k6
× v5
TPC-B ceiling, 1 VU: 4,368 transactions per second before, 145,524 after, 33.3 times as many.
TPC-B ceiling, 24 VUs: 38,694 transactions per second before, 517,627 after, 13.4 times as many.
TPC-C on PostgreSQL, 1 VU: 202 transactions per second before, 290 after, 1.4 times as many.
TPC-C on PostgreSQL, 16 VUs: 2,892 transactions per second before, 3,368 after, 1.2 times as many.
Database → Stroppy ceilingSame VM, 16 VUs. Different workloads; the gap is the room the client leaves.
× PostgreSQL
PostgreSQL TPC-C → noop TPC-B: 3,368 transactions per second before, 500,772 after, 148.7 times as many.

Don’t feel like setting up the machines?

Stroppy Cloud does that part. You pick a database and a workload; it brings up the stand, tunes it, runs the test and gives you a report with queries per second, latency and the moment errors began. Run it again next week and the two sit side by side.