Sign in

markcallaghan.bsky.social

@markcallaghan.bsky.social
84 followers 32 following 118 posts
PostsRepliesMedia
markcallaghan.bsky.social @markcallaghan.bsky.social · 22/01/2026
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-...
smalldatum.blogspot.com
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 ...
110
markcallaghan.bsky.social @markcallaghan.bsky.social · 21/01/2026
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 20/01/2026
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-...
smalldatum.blogspot.com
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 ...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 14/01/2026
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 08/01/2026
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...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 07/01/2026
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...
smalldatum.blogspot.com
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 ...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 02/01/2026
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...
smalldatum.blogspot.com
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...
040
markcallaghan.bsky.social @markcallaghan.bsky.social · 30/12/2025
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...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 30/12/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 20/12/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 17/12/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 11/12/2025
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...
smalldatum.blogspot.com
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;...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 10/12/2025
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-...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 10/12/2025
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-...
smalldatum.blogspot.com
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 ...
020
markcallaghan.bsky.social @markcallaghan.bsky.social · 08/12/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 02/12/2025
RocksDB is faster when compiled with clang than with gcc smalldatum.blogspot.com/2025/12/usin...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 29/11/2025
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...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 29/11/2025
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...
smalldatum.blogspot.com
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 ...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 22/11/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 30/10/2025
Watched it and it was excellent. I will start using 0x.tools soon
110
markcallaghan.bsky.social @markcallaghan.bsky.social · 27/10/2025
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?
110
markcallaghan.bsky.social @markcallaghan.bsky.social · 27/10/2025
It has yet to show up on the "on demand" section of the web site
210
markcallaghan.bsky.social @markcallaghan.bsky.social · 24/10/2025
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-...
smalldatum.blogspot.com
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...
030
markcallaghan.bsky.social @markcallaghan.bsky.social · 16/10/2025
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.
100
markcallaghan.bsky.social @markcallaghan.bsky.social · 16/10/2025
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
lnkd.in
LinkedIn
This link will take you to a page that’s not on LinkedIn
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 14/10/2025
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...
smalldatum.blogspot.com
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...
110
markcallaghan.bsky.social @markcallaghan.bsky.social · 13/10/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 05/10/2025
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...
smalldatum.blogspot.com
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...
020
markcallaghan.bsky.social @markcallaghan.bsky.social · 02/10/2025
Measuring scaleup for MariaDB using sysbench on a many-core server. smalldatum.blogspot.com/2025/10/meas...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 29/09/2025
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...
smalldatum.blogspot.com
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...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 26/09/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 11/09/2025
Postgres 18rc1 looks good vs sysbench smalldatum.blogspot.com/2025/09/post...
smalldatum.blogspot.com
Postgres 18rc1 vs sysbench
This post has results for Postgres 18rc1 vs sysbench on small and large servers. Results for Postgres 18beta3 are here for a small and larg...
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 02/09/2025
And results from a large server with high concurrency (40 connections). The possible regression mostly reproduces here but I am still uncertain that this is a regression. smalldatum.blogspot.com/2025/09/post...
smalldatum.blogspot.com
Postgres 18 beta3, large server, sysbench
This has performance results for Postgres 18 beta3, beta2, beta1, 17.5 and 17.4 using the sysbench benchmark and a large server. The working...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 02/09/2025
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...
smalldatum.blogspot.com
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...
110
markcallaghan.bsky.social @markcallaghan.bsky.social · 27/08/2025
And then there is the lawsuit.
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 26/08/2025
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...
smalldatum.blogspot.com
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 ...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 25/08/2025
Oracle had fun PR during the lawsuit. They put up a billboard on 101 with text like: Helped wanted: * Oracle - developers * Informix - lawyers to sue developers
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 25/08/2025
Long ago I was sued after changing employers from Informix to Oracle. It was quickly settled -- we re-signed employment contracts with Informix and went to work at Oracle.
100
markcallaghan.bsky.social @markcallaghan.bsky.social · 25/08/2025
In other news, DocumentDB was donated to the Linux Foundation is backed by Microsoft and Amazon. Maybe MongoDB should focus on that competitive threat instead of FerretDB, for example, consider adding a cost-based optimizer to MongoDB: opensource.microsoft.com/blog/2025/08...
opensource.microsoft.com
DocumentDB joins the Linux Foundation - Microsoft Open Source Blog
Learn how we’re carving out a path where document databases are open, interoperable, and standardized—built with flexibility and reliability.
100
markcallaghan.bsky.social @markcallaghan.bsky.social · 25/08/2025
Today I learned that MongoDB has sued FerretDB. I don't know the merits of the case. Regardless, I am not a fan of the lawsuit. * www.linkedin.com/feed/update/... * www.linkedin.com/feed/update/...
linkedin.com
In 2021, we founded FerretDB with a bold vision: to return the document database market to its open source roots by creating the leading open source alternative to MongoDB, built on Postgres. For… | ...
In 2021, we founded FerretDB with a bold vision: to return the document database market to its open source roots by creating the leading open source alternative to MongoDB, built on Postgres. For yea...
110
markcallaghan.bsky.social @markcallaghan.bsky.social · 22/08/2025
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...
smalldatum.blogspot.com
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. ...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 16/08/2025
I didn’t think it was possible for any provider to be worse than ESPN+
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 13/08/2025
Need a version of this for MongoDb
020
markcallaghan.bsky.social @markcallaghan.bsky.social · 06/08/2025
Is OCC in MongoDB raising errors per statement or during commit?
100
markcallaghan.bsky.social @markcallaghan.bsky.social · 01/08/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 29/07/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 28/07/2025
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...
smalldatum.blogspot.com
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...
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 25/07/2025
Enjoyed this last year. Looking forward to updates. Getting this out is a remarkable achievement. Thank you.
010
markcallaghan.bsky.social @markcallaghan.bsky.social · 11/06/2025
Might be a regression from 14.0 to 18 beta1 * QPS decreases by ~6% and ~18% on the write-heavy steps (l.i1, l.i2)
000
markcallaghan.bsky.social @markcallaghan.bsky.social · 11/06/2025
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...
smalldatum.blogspot.com
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...
100