markcallaghan.bsky.social
markcallaghan.bsky.social
@markcallaghan.bsky.social
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...
Using sysbench to measure how Postgres performance changes over time, November 2025 edition
This has results for the sysbench benchmark on a small and big server for Postgres versions 12 through 18. Once again, Postgres is boring be...
smalldatum.blogspot.com
November 29, 2025 at 4:07 PM
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...
Using sysbench to measure how MySQL performance changes over time, November 2025 edition
This has results for the sysbench benchmark on a small and big server for MySQL versions 5.6 through 9.5. The good news is that the arrival ...
smalldatum.blogspot.com
November 29, 2025 at 1:38 AM
For widely used C++ source, removing header files that are no longer needed (like ) will break builds for older releases of dependent projects.

smalldatum.blogspot.com/2025/11/chal...
Challenges compiling old C++ code on modern Linux
I often compile old versions of MySQL, MariaDB, Postgres and RocksDB in my search for performance regressions. Compiling is easy with Postgr...
smalldatum.blogspot.com
November 22, 2025 at 4:41 PM
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-...
How efficient is RocksDB for IO-bound, point-query workloads?
How efficient is RocksDB for workloads that are IO-bound and read-only? One way to answer this is to measure the CPU overhead from RocksDB a...
smalldatum.blogspot.com
October 24, 2025 at 7:23 PM
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
LinkedIn
This link will take you to a page that’s not on LinkedIn
lnkd.in
October 16, 2025 at 10:24 PM
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...
Is it time for TPC-BLOB?
If you want to store vectors in your database then what you store as a row, KV pair or document is likely to be larger than the fixed-page s...
smalldatum.blogspot.com
October 14, 2025 at 3:46 PM
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...
Postgres 18.0 vs sysbench on a 32-core server
This is yet another great result for Postgres 18.0 vs sysbench. This time I used a 32-core server. Results for a 24-core server are here . T...
smalldatum.blogspot.com
October 13, 2025 at 5:40 PM
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...
Measuring scaleup for Postgres 18.0 with sysbench
This post has results to measure scaleup for Postgres 18.0 on a 48-core server. tl;dr Postgres continues to be boring (in a good way) Result...
smalldatum.blogspot.com
October 5, 2025 at 5:35 PM
Measuring scaleup for MariaDB using sysbench on a many-core server.

smalldatum.blogspot.com/2025/10/meas...
Measuring scaleup for MariaDB with sysbench
This post has results to measure scaleup for MariaDB 11.8.3 on a 48-core server. tl;dr Scaleup is better for range queries than for point qu...
smalldatum.blogspot.com
October 2, 2025 at 2:30 AM
Postgres 18.0 looks great vs sysbench on a large server (24 cores)
* Postgres has a few small regressions and many larger improvements from versions 12 to 18.
* There might be many small regressions (<= 2%) from 17.6 to 18.0

smalldatum.blogspot.com/2025/09/post...
Postgres 18.0 vs sysbench on a 24-core, 2-socket server
This post has results from sysbench run at higher concurrency for Postgres versions 12 through 18 on a server with 24 cores and 2 sockets. M...
smalldatum.blogspot.com
September 29, 2025 at 5:59 PM
Postgres 18.0 looks great vs sysbench on a small server
* Postgres has a few small regressions and many larger improvements from versions 12 to 18.
* There might be a small regression (<= 2%) in short range queries from 17.6 to 18.0

smalldatum.blogspot.com/2025/09/post...
Postgres 18.0 vs sysbench on a small server
This has benchmark results for Postgres 18.0 using sysbench on a small server. Previous results for 18 rc1 are here . tl;dr From 12.22 to 18...
smalldatum.blogspot.com
September 26, 2025 at 4:08 PM
For Postgres 18 beta3, sysbench and a small server there might be small regressions (~2%) for the microbenchmarks that do range queries without aggregation. Otherwise, the results look great.

smalldatum.blogspot.com/2025/09/post...
Postgres 18 beta3, small server, sysbench
This has performance results for Postgres 18 beta3, beta2, beta1 and 17.6 using the sysbench benchmark and a small server. The working set i...
smalldatum.blogspot.com
September 2, 2025 at 3:04 AM
MySql 5.6 thru 9.4 vs the Insert Benchmark on a small server.
* good news - there are no large regressions after 8.0
* bad news - there are large regressions from 5.6 to 5.7 and 5.7 to 8.0

smalldatum.blogspot.com/2025/08/mysq...
MySQL 5.6 thru 9.4: small server, Insert Benchmark
This has results for the Insert Benchmark on a small server with InnoDB from MySQL 5.6 through 9.4. The workload here uses low concurrency ...
smalldatum.blogspot.com
August 26, 2025 at 3:32 AM
MySQL 5.6 thru 9.4 vs sysbench on a small server
* The bad news - performance regressions aren't getting fixed
* The good news - regressions after MySQL 8.0 are small

smalldatum.blogspot.com/2025/08/sysb...
Sysbench for MySQL 5.6 thru 9.4 on a small server
This has performance results for InnoDB from MySQL 5.6.51, 5.7.44, 8.0.43, 8.4.6 and 9.4.0 on a small server with sysbench microbenchmarks. ...
smalldatum.blogspot.com
August 21, 2025 at 11:33 PM
I repeated the 1-client & cached workload for Postgres 18 beta2 and the Insert Benchmark, but changed to run the write-heavy benchmark steps for ~10X more time:
* one regression is gone, see results for l.i2
* one regression remains, see results for qr100

smalldatum.blogspot.com/2025/08/post...
Postgres 18 beta2: large server, Insert Benchmark, part 2
I repeated the benchmark for one of the workloads used in a recent blog post on Postgres 18 beta2 performance. The workload used 1 client a...
smalldatum.blogspot.com
August 1, 2025 at 5:47 PM
Postgres 18 beta2 vs sysbench on a large server
* results look great
* for a few microbenchmarks there might be regressions of ~2%

smalldatum.blogspot.com/2025/07/post...
Postgres 18 beta2: large server, sysbench
This has performance results for Postgres 17.4, 17.5, 18 beta1 and 18 beta2 on a large server with sysbench microbenchmarks. Results like th...
smalldatum.blogspot.com
July 29, 2025 at 6:37 PM
Postgres 18 beta2 vs the Insert Benchmark on a large server. There might be small regression, or there might be noise in my results. I have more work in progress to explain it.

smalldatum.blogspot.com/2025/07/post...
Postgres 18 beta2: large server, Insert Benchmark
This has results for the Insert Benchmark with Postgres on a large server.  There might be small regressions, but I have more work in progre...
smalldatum.blogspot.com
July 28, 2025 at 1:49 AM
Postgres 18 beta1 vs an IO-bound insert benchmark on a small server

Might be regressions from 17.5 to 18 beta1
* QPS decreases by ~5% on the second write-only step
* QPS decreases by <= 2% on the range query steps

smalldatum.blogspot.com/2025/06/post...
Postgres 18 beta1: small server, IO-bound Insert Benchmark (v2)
This is my second attempt at an IO-bound Insert Benchmark results with a small server. The first attempt  is here  and has been deprecated b...
smalldatum.blogspot.com
June 11, 2025 at 5:11 PM
Postgres 18 beta1 vs the Insert Benchmark on a small server, without the regression from slower connection create.
* Perf between 17.5 and 18 beta1 is similar on read-heavy
* 18 beta1 might have small regressions from new CPU overheads on write-heavy

smalldatum.blogspot.com/2025/06/post...
Postgres 18 beta1: small server, CPU-bound Insert Benchmark (v2)
This is my second attempt at CPU-bound Insert Benchmark results with a small server. The first attempt is here and has been deprecated beca...
smalldatum.blogspot.com
June 8, 2025 at 11:25 PM
Postgres 18 beta1 vs an IO-bound Insert Benchmark on a large server
* Perf is mostly similar to 17.4 for load, index and write-heavy benchmark steps
* Point and range query benchmark steps have small (2% to 5%) regressions perhaps from new CPU overhead

smalldatum.blogspot.com/2025/06/post...
Postgres 18 beta1: large server, IO-bound Insert Benchmark
This has results for a CPU-bound Insert Benchmark with Postgres on a large server. A blog post about a CPU-bound workload on the same server...
smalldatum.blogspot.com
June 6, 2025 at 7:10 PM
Postgres 18 beta1 vs the Insert Benchmark on a large server

The good news:
* no regressions, maybe a few small improvements on the basics

The less good news:
* connection create is much slower with io_method=io_uring

smalldatum.blogspot.com/2025/06/post...
Postgres 18 beta1: large server, CPU-bound Insert Benchmark
This has results for a CPU-bound Insert Benchmark with Postgres on a large server. A blog post about a similar workload on a small server is...
smalldatum.blogspot.com
June 4, 2025 at 7:09 PM
While testing io_method=worker in Postgres 18 beta1 I initially set io_worker to a value that was too large. This explains some of the impact from that mistake.

tl;dr - the default value for io_workers is good

smalldatum.blogspot.com/2025/05/post...
Postgres 18 beta1: large server, Insert Benchmark, bad configurations
While testing Postgres 18 beta1 on a large server I used several configurations with io_workers set to values the are too large and performa...
smalldatum.blogspot.com
May 29, 2025 at 1:33 AM