Here's what nobody tells you about database benchmarking: it's designed to waste your time and cloud budget. I spent three months running every benchmark tool I could find, and 90% of them broke before producing useful results.
The Shit That Actually Matters
TPC-C is useless for web apps. Period. I ran it for a week straight and learned nothing about why my e-commerce app was slow. TPC-C simulates some old warehouse system from the 90s - who the hell knows why we still use it. Unless you're literally managing warehouses, ignore it.
Cloud provider benchmarks are lies. AWS RDS MySQL gets 50% slower when you add real network latency. Azure PostgreSQL performance drops by 30% when other tenants wake up. That "99.99% availability" rating? I've seen three outages in two months.
MongoDB's performance claims assume you never do JOINs. Once you start using $lookup
aggregations (their pathetic JOIN equivalent), performance falls off a cliff. That 2,000 ops/sec marketing bullshit? Try maybe 200 if you're lucky.
What Actually Broke During Testing
PostgreSQL 17 memory leaks: The new parallel query processing has a memory leak when you run more than 50 concurrent connections. Took down my test server twice before I figured out the connection limit workaround.
MySQL 9.0 optimizer regression: Their "improved" optimizer sometimes picks table scans over perfectly good indexes. Error message: "Using temporary; Using filesort" - the kiss of death for performance.
MongoDB 8.0 time series disaster: Time series collections lock up completely if you insert data out of chronological order. Got `WriteConflictException` errors until I gave up and used InfluxDB instead.
The Real Performance Numbers (From My Laptop, Not a Marketing Department)
Tested on 16GB RAM, NVMe SSD, i7-12700H. Your mileage will vary:
PostgreSQL 17: Fastest for complex queries with JOINs. Handles 200 concurrent connections before choking. Memory usage grows linearly - plan accordingly.
MySQL 9.0: Best connection handling (500+ concurrent). Query performance varies wildly based on optimizer mood. InnoDB buffer pool tuning is still black magic.
MongoDB 8.0: Fastest simple inserts, but aggregation pipelines are slower than SQL JOINs. Sharding is a nightmare - avoid unless you hate yourself.
Why Benchmarks Don't Match Reality
Network latency kills everything. That 2ms query becomes 50ms when your app server is in a different AZ. Nobody mentions this in benchmarks because it makes their numbers look like shit.
Cache warmup takes forever. First-run performance is 10x slower than steady-state. Most benchmarks ignore this completely. PostgreSQL and MySQL need like 10-15 minutes to actually warm up their caches, but benchmark vendors pretend this doesn't exist.
Maintenance operations fuck everything up. VACUUM, ANALYZE, index maintenance - your "consistent" performance disappears every time PostgreSQL decides to clean house.
Real talk: benchmark tools spend more time installing dependencies and failing to connect than actually testing databases.