🔥 The DB Grill 🔥

Where database blog posts get flame-broiled to perfection

Postgres 18 beta3, small server, sysbench
Originally from smalldatum.blogspot.com/feeds/posts/default
September 2, 2025 • Roasted by Rick "The Relic" Thompson Read Original Article

Alright, settle down, kids, let ol' Rick take a look at what the latest high-priest of PostgreSQL has divined from the silicon entrails... "Performance results for Postgres 18 beta3"... Oh, the excitement is palpable. They're searching for CPU regressions. The humanity. You know what we searched for back in my day? The tape with last night's backup, which intern Jimmy probably used as a coaster.

Let's see what kind of heavy iron they're using for this Herculean task. A "small server," he says. A Ryzen 7 with 32 gigs of RAM. Small? Son, I ran payroll for a Fortune 500 company on a System/370 with 16 megabytes of core memory. That's megabytes. We had to schedule batch jobs with JCL scripts that looked like religious texts, and you're complaining about a 2% CPU fluctuation on a machine that could calculate the trajectory of every satellite I've ever known in about three seconds.

And the test conditions! Oh, this is the best part. "The working set is cached" and it's run with "low concurrency (1 connection)". One. Connection. Are you kidding me? That's not a benchmark, that's a hermit writing in his diary. We used to call that "unit testing," and we did it before the coffee got cold. Back in my day, a stress test was when the CICS region spiked, three hundred tellers started screaming because their terminals froze, and you had to debug a COBOL program by reading a hexadecimal core dump off green-bar paper. You kids with your "cached working sets" have no idea. You've wrapped the database in silk pajamas and are wondering why it's not sweating.

Then there's my favorite recurring character in the Postgres comedy show:

Vacuum continues to be a problem for me and I had to repeat the benchmark a few times to get a stable result. It appears to be a big source of non-deterministic behavior...

You don't say. Your fancy, auto-magical garbage collection is a "big source of non-deterministic behavior." You know what we called that in the 80s? A bug. We had a process called REORG. It ran on Sunday at 2 AM, took the whole database offline for three hours, and when it was done, you knew it was done. It was predictable. It was boring. It worked. This "vacuum" of yours sounds like a temperamental Roomba that sometimes cleans the floor and sometimes decides to knock over a lamp just to keep things interesting. And you're comparing it to RocksDB compaction and InnoDB purge? Congratulations, you've successfully reinvented three different ways to have the janitor trip the main breaker at inopportune times.

And the results... oh, the glorious, earth-shattering results. A whole spreadsheet full of numbers like 0.98, 1.01, 0.97. My God, the variance! Someone call the press! We've got a possible 2-4% regression on "range queries w/o agg." Two percent! We used to have punch card misreads that caused bigger deviations than that! I once spent a week hunting down a bug in an IMS hierarchy because a guy in third shift dropped a deck of cards. That was a regression, kid. You're agonizing over a rounding error. You've spent hours compiling four different beta versions, tweaking config files with names like x10b2_c8r32, and running "microbenchmarks" for 900 seconds a pop to find out that your new code is... a hundredth of a second slower on a Tuesday.

And you're not even sure! "I am not certain it is a regression as this might be from non-deterministic CPU overheads for read-heavy workloads that are run after vacuum."

So, let me get this straight. You built a pristine laboratory, on a machine more powerful than the Apollo guidance computer, ran a single user doing nothing particularly stressful, and your grand conclusion is, "Well, it might be a little slower, maybe. I think. It could just be that vacuum thing acting up again. I'll have to look at the CPU flamegraphs later."

Flamegraphs. We used to call that "staring at the blinking lights on the front of the mainframe and guessing which one meant trouble." You've just got a prettier picture of your own confusion.

Honestly, it's all just cycles. We had hierarchical databases, then relational was the future. Then everyone got excited about objects. Then NoSQL was the revolution that would kill SQL. And here you are, a decade later, obsessing over single-digit percentage points in the most popular relational database on the planet, which is still struggling with the same garbage collection problems we solved with REORG and a scheduled outage window in 1985.

You kids and your betas. Wake me up when you've invented something new. I'll be in the server room, checking to see if anyone's replaced the HALON tanks with a sprinkler system. Now that's a regression.