From a CPU-bound Insert Benchmark for Postgres on 24-core and 32-core servers
* a few small improvements
* possibly a few small regressions thanks to get_actual_variable_range
* too much variance on write-heavy workloads thanks to vacuum
smalldatum.blogspot.com/2026/01/cpu-...
Posts by markcallaghan
From an IO-bound Insert Benchmark on 24-core and 32-core servers:
* modern MySQL is mostly faster than 5.6.51
* there are few perf regressions after MySQL 8.0
* Postgres is mostly faster than MySQL but has far more variance on write-heavy benchmark steps
smalldatum.blogspot.com/2026/01/io-b...
From a CPU-bound Insert Benchmark on 24-core and 32-core servers:
* modern MySQL has big improvements for writes and big regressions for reads
* Postgres is mostly faster than MySQL
* Postgres has much more variance than MySQL on write-heavy benchmark steps
smalldatum.blogspot.com/2026/01/cpu-...
There might be performance regressions that arrived in Postgres 16 and 18 for write-heavy tests, and which remain in Postgres 18.1. This will take time to explain, debug and confirm. My posts:
* part 1 - smalldatum.blogspot.com/2025/12/io-b...
* part 2 - smalldatum.blogspot.com/2026/01/debu...
My first result using tproc-c from HammerDB to compare Postgres versions 12 through 18 on a small server:
* no regressions
* many improvements for Postgres 17.7 and 18.1
* Postgres remains boring for people who search for regressions
smalldatum.blogspot.com/2026/01/post...
I document fsync latency on the SSDs I use. It would be great if I could always use an enterprise SSD, but for that I need them in the m.2 2280 form factor.
smalldatum.blogspot.com/2026/01/ssds...
The patent expired on my favorite sort algorithm. I hope to see an open-source implementation of it one day.
smalldatum.blogspot.com/2026/01/comm...
Benchmark results for modern RocksDB on an 8-core and 48-core server:
* RocksDB is boring, there aren't regressions
smalldatum.blogspot.com/2025/12/perf...
For IO-bound sysbench vs Postgres on a 48-core server
* QPS in 18.1 is similar to 12.22 for most read-only tests, and up to 1.25X larger for some range queries
* QPS in 18.1 for writes might have a few large regressions
* for 18.1, io_method=io_uring helps
smalldatum.blogspot.com/2025/12/io-b...
IO-bound sysbench vs MySQL on a 48-core server
* for read-only the regressions are smaller than what I measure for CPU-bound sysbench
* for write-heavy the improvements are similar to what I measure for CPU-bound sysbench
smalldatum.blogspot.com/2025/12/io-b...
There are perf regressions for write-heavy sysbench tests in MySQL 8.4 and 9.x
* the regressions are larger with concurrency
* the regressions are worse with gtid_mode=ON and enforce_gtid_consistency=ON and their default changed from OFF to ON in MySQL 9.5
smalldatum.blogspot.com/2025/12/perf...
MySQL 5.6 to 9.5 vs sysbench on a 2-socket server:
* old bad news - there were many large regressions from 5.6 to 5.7 to 8.0
* new bad news - there are some new regressions after MySQL 8.0
smalldatum.blogspot.com/2025/12/sysb...
MySQL 5.6 to 9.5 vs the insert benchmark on a small server
* good news - there are no large regressions after 8.0
* bad news - there are many large regressions from 5.6 to 5.7 to 8.0
smalldatum.blogspot.com/2025/12/the-...
Postgres 18.1 vs the insert benchmark on a small server.
Still boring in a good way - a few small regressions, a few small improvements
smalldatum.blogspot.com/2025/12/the-...
RocksDB on a small Arm server - performance in 10.8 is similar to 6.29 (or better) except for the overwrite test where new CPU overhead in versions 7.x and 8.x, probably from correctness checks, reduce throughput by 7%.
This is boring, in a good way.
smalldatum.blogspot.com/2025/12/rock...
Postgres 12 to 18 vs sysbench at low and high concurrency.
tl;dr
* a few small regressions
* many more small improvements
* many large improvements starting in PG 17 for write-heavy tests at high-concurrency
smalldatum.blogspot.com/2025/11/usin...
MySQL vs sysbench:
* many large regressions from 5.6 to 5.7 & 5.7 to 8.0
* some small regressions from 8.0 through 9.5
Modern MySQL
* suffers from new CPU overheads at low concurrency
* benefits from changes to reduce mutex contention at high concurrency
smalldatum.blogspot.com/2025/11/usin...
For widely used C++ source, removing header files that are no longer needed (like <cstdint>) will break builds for older releases of dependent projects.
smalldatum.blogspot.com/2025/11/chal...
Watched it and it was excellent.
I will start using 0x.tools soon
I am watching your 2024 p99 conf video right now. Tools look great. When using xtop is there an option to present an aggregated result across many samples?
It has yet to show up on the "on demand" section of the web site
Q: Is RocksDB a good choice if you just want to do point queries for a read-only and IO-bound workload?
A: It depends
smalldatum.blogspot.com/2025/10/how-...
Is there an exception for those of us still traumatized by that Bucky Dent home run? While I haven't been a Red Sox fan, long ago when I watched baseball I could not stand the Yankees.
Bucky Dent does not get to hit home runs in big games.
This was fun to explain.
I was confused at first when looking at flamegraphs where 20% of the samples were from page fault handling while running db_bench with read-heavy and IO-bound workloads.
lnkd.in/g9ZHmuGT
Is it time for TPC-BLOB? DBMS performance and efficiency for workloads with objects larger than the fixed-page size is becoming much more important.
smalldatum.blogspot.com/2025/10/is-i...
Postgres 18.0 looks great vs sysbench on a 32-core server
* Postgres has a few small regressions and many larger improvements from versions 12 to 18.
* There might be several small regressions (<= 3%) from 17.6 to 18.0
smalldatum.blogspot.com/2025/10/post...
Measuring scaleup for Postgres 18.0 using sysbench on a many-core server.
Results are mostly excellent and Postgres continues to be boring in a good way.
smalldatum.blogspot.com/2025/10/meas...