The Curious Engineer

All blogs / Databases

boringSQL

boringsql.com

Learn practical SQL & PostgreSQL techniques. Build rock-solid data systems with 'boring' database solutions that deliver reliability without the drama.

Databases

Posts
53 from 14 Apr 2024 to 11 Oct 2026
Posting
weekly (33 in the last year)
Kind
personal blog
Feed
https://boringsql.com/atom.xml

2026 29

  1. How TABLESAMPLE picks rows
  2. Postgres relation files, filed under base/
  3. What REPACK (CONCURRENTLY) costs while it runs
  4. Where PostgreSQL stores row locks
  5. The unbearable lightness of one more index
  6. Read your own writes, off the primary
  7. The curious case of Google's AlloyDB
  8. The DISTINCT in your COUNT
  9. PostgreSQL's MVCC is bad. So is everyone else's.
  10. The tests passed. The plan didn't.
  11. VACUUM at the Page Level
  12. Same rows, different SUM
  13. The NULL in your NOT IN
  14. pg_stat_statements: everything it can't
  15. pg_stat_statements: everything it tells you
  16. TOAST: Where PostgreSQL hides big values
  17. Welcome to ORDER BY jungle
  18. Strong views on PostgreSQL VIEWs
  19. HOT Updates in Postgres
  20. PostgreSQL MVCC, Byte by Byte
  21. Don't let AI touch your production database
  22. Good CTE, bad CTE
  23. pg_regresql: truly portable PostgreSQL statistics
  24. Production query plans without production data
  25. PostgreSQL Statistics: Why queries run slow
  26. Inside PostgreSQL's 8KB Page
  27. Reading Buffer statistics in EXPLAIN output
  28. Introduction to Buffers in PostgreSQL
  29. The hidden cost of PostgreSQL arrays

2025 10

  1. Instant database clones with PostgreSQL 18
  2. VACUUM Is a Lie (About Your Indexes)
  3. RegreSQL: Regression Testing for PostgreSQL Queries
  4. Beyond Start and End: PostgreSQL Range Types
  5. PostgreSQL maintenance without superuser
  6. Beyond the Basics of Logical Replication
  7. First steps with Logical Replication in PostgreSQL
  8. PostgreSQL Service Connections
  9. Time to Better Know The Time in PostgreSQL
  10. VIEW inlining in PostgreSQL

2024 14

  1. DELETEs are difficult
  2. Text identifiers in PostgreSQL database design
  3. We need to talk about ENUMs
  4. Beyond Simple Upserts with MERGE in PostgreSQL
  5. Gentle Introduction to Window Functions in PostgreSQL
  6. The time keepers: pg_cron and pg_timetable
  7. Deep Dive into PostgREST - Time Off Manager (Part 3)
  8. Custom PostgreSQL extensions with Rust
  9. Deep Dive into PostgREST - Time Off Manager (Part 2)
  10. Deep Dive into PostgREST - Time Off Manager (Part 1)
  11. How not to change PostgreSQL column type
  12. The Bloat Busters: pg_repack vs pg_squeeze
  13. Are SQL & Databases Boring? Absolutely - and That's a Good Thing!
  14. When and Why PostgreSQL Indexes Are Ignored