markcallaghan.bsky.social
markcallaghan.bsky.social
@markcallaghan.bsky.social
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
IO-bound Insert Benchmark on a small server with Postgres

For 18 beta1 vs 17.5
* write-heavy steps are up to 5% slower in 18 beta1
* range query steps are up to 3% slower in 18 beta1
* point query steps are up to 2% slower in 18 beta1

smalldatum.blogspot.com/2025/05/post...
Postgres 18 beta1: small server, IO-bound Insert Benchmark
I recently published results for Postgres 18 beta1 on a small server using the Insert Benchmark with a cached workload and low concurrency. ...
smalldatum.blogspot.com
May 28, 2025 at 8:21 PM
For Postgres 18 beta1, small server, cached workload, low concurrency: there might be regressions and if so these are from new CPU overheads. But my results are far from certain. The largest regressions occur on the write heavy and point query steps.

smalldatum.blogspot.com/2025/05/post...
Postgres 18 beta1: small server, cached Insert Benchmark
I recently published results for Postgres 18 beta1 on a small server using sysbench with a cached and IO-bound workload. This post has res...
smalldatum.blogspot.com
May 27, 2025 at 11:24 PM
Results for Postgres 18 beta1 on a large server are interesting. There might be small regressions (2% to 5%) from more CPU on tests that do range queries or writes. Or there might be noise that is to be expected from a complex system. Time to explain this.

smalldatum.blogspot.com/2025/05/post...
Postgres 18 beta1: large server, sysbench
This has performance results for Postgres 18 beta1 and 17.4 from the sysbench benchmark and a large server. Results like this from me are us...
smalldatum.blogspot.com
May 25, 2025 at 4:32 PM
Postgres 18 beta1 looks great vs IO-bound sysbench on a small server:
* scans are much faster with io_method set to worker or io_uring
* context switch rates are much higher with io_method set to worker or io_uring
* 18 beta1 and 17.5 have similar performance

smalldatum.blogspot.com/2025/05/post...
Postgres 18 beta1: small server, sysbench, IO-bound
This has performance results for Postgres 18 beta1 and several older Postgres releases using the sysbench benchmark and a small server. The ...
smalldatum.blogspot.com
May 25, 2025 at 3:00 AM