What I learned at Nordic PGDay 2026

This week I attended Nordic PGDay 2026. It’s a one-day PostgreSQL conference that travels between Stockholm, Copenhagen, Oslo, and Helsinki.

I don’t know much about PostgreSQL, but since I like databases and the event was close by, I thought I’d pop in. It’s pretty nice to take a tram to a conference instead of an airplane.

In this post, I want to share a few things that I learned at the conference.


Ants Aasma gave a talk about fixing lock contention in OLTP. He gave a bunch of suggestions for minimizing transaction length such as batching transactions on the application side and using stored procedures to avoid network roundtrips between SQL statements.

He had prototyped “eventual durability” for PostgreSQL. Normally PostgreSQL holds lock for a write transaction until the write has been flushed to the disk. Ants’s idea was to release the lock without waiting for the flush so that the next transaction could acquire the lock and start the work speculatively. The first transaction would still be only reported as completed once the flush was done. This gave an impressive speedup in his benchmark. See his slides for graphs.

Teresa Lopes talked about operational hazards of 100+ TB PostgreSQL databases. Having hundreds of terabytes of data in a data lake already takes work to manage. But in PostgreSQL?! Wow.

It was interesting to learn about how instead of having a dozen replicas, they have a tree of replicas to cut down the replication overhead. They also spend a lot of effort in choreographing VACUUM to avoid running out of transaction IDs while still keeping the performance good. PostgreSQL uses a 32-bit counter for transaction IDs so wraparound is a real problem for busy database instances.

Radim Marek’s talk about regression testing SQL queries was another interesting one. He talked not only about testing the results of the queries but also testing their performance by analyzing EXPLAIN (ANALYZE, BUFFERS) results. He has put his ideas into a tool called regresql. From his talk, I also learned that since PostgreSQL 18, the optimizer statistics can be dumped and restored. This means you could use production stats for EXPLAIN in your test suite!


It was a nice, small conference with about 130 attendees. I enjoyed it a lot – thanks to the organizers and speakers! I think I’ll go again, at least the next time it takes place in Helsinki…

Photo: I forgot to take any pictures at the conference, so you’ll have to settle for the picture of rock face in Espoo.


About the author: My name is Miikka Koskinen. I'm an experienced software engineer and consultant focused on solving problems in storing data in cloud: ingesting the data, storing it efficiently, scaling the processing, and optimizing the costs.

Could you use help with that? Get in touch at miikka@jacksnipe.fi.