Radim @ boringSQL
banner
boringsql.com
Radim @ boringSQL
@boringsql.com
Straightforward PostgreSQL and SQL tips, tricks, and tools to get stuff done (no fluff).
Buffers came up during Postgres FM chat and people asked why they matter so much. So I wrote about it - with interactive demos to make it click.

Introduction to Buffers: boringsql.com/posts/introd...

Do the visuals help you to grasp the concept easier? Let me know.
Introduction to Buffers in PostgreSQL
How PostgreSQL actually manages memory, from shared_buffers and dirty pages to the OS page cache sitting underneath it all.
boringsql.com
January 24, 2026 at 6:56 PM
First testing of RegreSQL integration with Rails / ActiveRecord via `rake regresql:export`.
January 18, 2026 at 11:16 AM
I got myself talking about the motivation behind RegreSQL on Postgres FM 🎙️

We nerded out a bit about why timing is a terrible metric, why buffers actually matter, statistics, performance – and why all of this is more relevant in the age of agentic coding.

postgres.fm/episodes/reg...
Postgres FM | RegreSQL
Nik and Michael are joined by Radim Marek from boringSQL to talk about RegreSQL, a regression testing tool for SQL queries they forked and improved recently. Here are some links to things they ment...
postgres.fm
January 16, 2026 at 8:12 PM
Test if queries hit the right indexes at production scale – without needing to have production data.

I'll show you exactly how during @praguepgdevday.bsky.social - Session "It works on my database - Regression testing of SQL queries" is last of the day, but I intend to make it worth staying for.
January 14, 2026 at 10:27 PM
Where do you stand when it comes to #postgresql arrays?

If you want to learn more, check out my latest deep-dive into the topic of arrays, exploring TOAST, GIN indexing gotchas, and when to just use a link table.

boringsql.com/posts/good-b...
The hidden cost of PostgreSQL arrays
Deep dive into PostgreSQL arrays: why they're document storage in disguise, the TOAST performance trap, GIN vs B-tree indexing, the dangerous ANY() operator, and when junction tables beat arrays.
boringsql.com
January 13, 2026 at 11:53 AM
Writing about instant clones of PostgreSQL databases was not a clever move. Now I have to keep repeating to myself:

I will NOT rewrite the whole control plane
I will NOT scrap everything for #freebsd jails
I will NOT rebuild everything with native ZFS snapshots
December 28, 2025 at 10:17 AM
Introducing pg-storage-visualiser - tool made for EDUCATIONAL purposes to help you better understand how hashtag #postgresql stores data (both tables and indexes).

The repository is available at GitHub github.com/boringSQL/pg...

www.youtube.com/watch?v=fRz1...
Introducing pg-storage-visualizer
YouTube video by boringSQL
www.youtube.com
December 26, 2025 at 11:30 AM
Ha! Wanted to write about #postgresql 18's new features, but most got covered already. One I haven't seen mentioned yet is file_copy_method.

It's foundation for some SQL Labs features I'm building, so let's spread the word.

Instant database clones with PostgreSQL 18
boringsql.com/posts/instan...
Instant database clones with PostgreSQL 18
Learn how to clone PostgreSQL databases instantly using reflinks. Turn slow template copies into milliseconds with PostgreSQL 18's new file copy options.
boringsql.com
December 23, 2025 at 6:55 AM
It's gonna be cold, grey, and dark, but thanks to Postgres community events, there's something to look forward to. My evenings are busy next week, but in a good way - are you going to join me?

Mon, 24 Nov in Prague - lnkd.in/dP5es2Nc

Thu, 27 Nov in Malmo - www.meetup.com/malmo-postgr...
November 20, 2025 at 7:28 PM
Can't believe it's 5 years since my first pull request. Now sharing RegreSQL as my own fork.

boringsql.com/posts/regres...
RegreSQL: Regression Testing for PostgreSQL Queries
Stop deploying broken SQL queries. RegreSQL provides regression testing for PostgreSQL queries with performance baselines and automated warnings.
boringsql.com
November 14, 2025 at 2:08 PM
Reposted by Radim @ boringSQL
“Early in our company’s life, we built everything around modern data frameworks — until we realized the simplest, most reliable tool had been in front of us all along”

blog.sturdystatistics.com/posts/sql/
The Quiet Power of SQL – Sturdy Statistics Blog
blog.sturdystatistics.com
November 14, 2025 at 12:14 PM
Range types are one of PostgreSQL’s most underutilized features — let’s change that boringsql.com/posts/beyond...

#postgresql
Beyond Start and End: PostgreSQL Range Types
Discover PostgreSQL range types for cleaner schemas and atomic conflict detection. Use tstzrange, daterange, and int4range to enforce data integrity with exclusion constraints.
boringsql.com
November 3, 2025 at 6:48 PM
Back after the summer break with a new article on PostgreSQL security: performing common maintenance tasks without distributing SUPERUSER privileges.

boringsql.com/posts/postgr...
PostgreSQL maintenance without superuser
Learn about PostgreSQL maintenance without superuser privileges. Predefined roles like pg_monitor and pg_maintain provide secure database administration.
boringsql.com
September 14, 2025 at 4:56 PM
Attending ViennaDB meet up
April 7, 2025 at 4:58 PM
A good way to end 2024 - migrating personal servers to FreeBSD
December 31, 2024 at 8:35 PM
Meet me and other PostgreSQL enthusiasts in London (UK) next week www.meetup.com/london-postg...
Elephants At The Watering Hole, Wed, Dec 11, 2024, 6:30 PM | Meetup
**HI Everybody** Come along and talk about PostgreSQL with fellow PostgreSQL users, specialists, developers and all round enthusiasts of PostgreSQL. This is a relaxed soci
www.meetup.com
December 4, 2024 at 2:55 PM
Impostor syndrome always hits me hard when something gets this much exposure 🙈
DELETEs Are Difficult (notso.boringsql.com)

Main Link | Discussion
December 1, 2024 at 3:31 PM
You can probably guess where this leads. Since transactions are already a pain for developers, imagine the chaos when issues hits the production. Locks and a growing queue of waiting statements are inevitable… Fun starts in 3, 2, 1.
December 1, 2024 at 10:03 AM
Preparing a draft for the next article, which touches on transaction isolation (not the main topic though). This means the text needs to be super clear and include plenty of examples. Transactions are the number one source of pain for the majority of developers (unfortunately).
December 1, 2024 at 10:00 AM
Reposted by Radim @ boringSQL
ORM are evil. SQL is meant to be handcrafted.
November 28, 2024 at 6:32 PM
Not really doing anything for optimising SEO and stuff like that, but it's surprising to see ChatGPT as referrer for boringSQL more and more 🤔
November 28, 2024 at 9:17 AM