markcallaghan.bsky.social's Avatar

markcallaghan.bsky.social

@markcallaghan.bsky.social

81 Followers  |  32 Following  |  118 Posts  |  Joined: 18.08.2023  |  1.4528

Latest posts by markcallaghan.bsky.social on Bluesky

CPU-bound Insert Benchmark vs Postgres on 24-core and 32-core servers This has results for Postgres versions 12 through 18 with a CPU-boundย  Insert Benchmark ย on 24-core and 32-core servers. A report for MySQL ...

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-...

22.01.2026 20:42 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
IO-bound Insert Benchmark vs MySQL on 24-core and 32-core servers This has results for MySQL versions 5.6 through 9.5 with an IO-boundย  Insert Benchmark ย on 24-core and 32-core servers. The workload uses I...

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...

21.01.2026 20:23 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
CPU-bound Insert Benchmark vs MySQL on 24-core and 32-core servers This has results for MySQL versions 5.6 through 9.5 with a CPU-boundย  Insert Benchmark ย on 24-core and 32-core servers. The workload uses a ...

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-...

20.01.2026 19:26 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
IO-bound sysbench vs Postgres on a 48-core server This has results for an IO-bound sysbench benchmark on a 48-core server for Postgres versions 12 through 18. Results from a CPU-bound sysben...

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...

14.01.2026 22:04 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Postgres vs tproc-c on a small server This is my first post with results from tproc-c using HammerDB . This post has results for Postgres.ย  tl;dr - across 8 workloads (low and me...

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...

08.01.2026 20:56 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
SSDs, power loss protection and fsync latency This has results to measure the impact of calling fsync (or fdatasync) per-write for files opened with O_DIRECT. My goal is to document the ...

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...

07.01.2026 19:01 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Common prefix skipping, adaptive sort The patent expired for US7680791B2 . I invented this while at Oracle and it landed in 10gR2 ย with claims of ~5X better performance vs the pr...

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...

02.01.2026 19:41 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Performance for RocksDB 9.8 through 10.10 on 8-core and 48-core servers This post has results for RocksDB performance using db_bench on 8-core and 48-core servers. I previouslyย shared resultsย for RocksDB performa...

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...

30.12.2025 20:51 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
IO-bound sysbench vs Postgres on a 48-core server This has results for an IO-bound sysbench benchmark on a 48-core server for Postgres versions 12 through 18. Results from a CPU-bound sysben...

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...

30.12.2025 05:17 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
IO-bound sysbench vs MySQL on a 48-core server This has results for an IO-bound sysbench benchmark on a 48-core server for MySQL versions 5.6 through 9.5. Results from a CPU-bound sysbenc...

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...

20.12.2025 18:27 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Performance regressions in MySQL 8.4 and 9.x with sysbench I have been claiming that I don't find significant performance regressions in MySQL 8.4 and 9.x when I use sysbench. I need to change that c...

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...

17.12.2025 19:21 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Sysbench for MySQL 5.6 through 9.5 on a 2-socket, 24-core server This has results for the sysbench benchmark on a 2-socket, 24-core server. A post with results from 8-core and 32-core servers is here . tl;...

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...

11.12.2025 18:49 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
The insert benchmark on a small server : MySQL 5.6 through 9.5 This has results for MySQL versions 5.6 through 9.5 with theย  Insert Benchmark ย on a small server. Results for Postgres on the same hardware...

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-...

10.12.2025 21:20 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
The insert benchmark on a small server : Postgres 12.22 through 18.1 This has results for Postgres versions 12.22 through 18.1 with theย  Insert Benchmark ย on a small server. Postgres continues to be boring in ...

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-...

10.12.2025 20:41 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
RocksDB performance over time on a small Arm server This post has results for RocksDB on an Arm server. I previously shared results for RocksDB performance using gcc and clang. Here I share r...

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...

08.12.2025 23:04 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Using db_bench to measure RocksDB performance with gcc and clang This has results for db_bench, a benchmark for RocksDB, when compiling it with gcc and clang. On one of my servers I saw a regression on one...

RocksDB is faster when compiled with clang than with gcc

smalldatum.blogspot.com/2025/12/usin...

02.12.2025 02:35 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
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...

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...

29.11.2025 16:07 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
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 ...

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...

29.11.2025 01:38 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
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...

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...

22.11.2025 16:41 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Watched it and it was excellent.
I will start using 0x.tools soon

30.10.2025 03:53 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

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?

27.10.2025 16:19 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

It has yet to show up on the "on demand" section of the web site

27.10.2025 16:05 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
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...

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-...

24.10.2025 19:23 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

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.

16.10.2025 22:26 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
LinkedIn This link will take you to a page thatโ€™s not on LinkedIn

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

16.10.2025 22:24 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
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...

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...

14.10.2025 15:46 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
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...

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...

13.10.2025 17:40 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
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...

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...

05.10.2025 17:35 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
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...

Measuring scaleup for MariaDB using sysbench on a many-core server.

smalldatum.blogspot.com/2025/10/meas...

02.10.2025 02:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
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...

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...

29.09.2025 17:59 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@markcallaghan is following 20 prominent accounts