#​644 — April 15, 2026

Web Version

Together with  Tiger Data logo

Postgres Weekly

Keeping a Postgres Queue Healthy — Running a job queue in Postgres works well (“just use Postgres!”) until long-running analytics queries silently prevent autovacuum from keeping up. Here’s what’s actually going on and what you can do about it, along with PlanetScale’s own in-house solution.

Simeon Griggs (PlanetScale)

You Extend Postgres for Everything Else. Why Not Analytics? — TimescaleDB adds hypertables, 95% compression, and continuous aggregates so Postgres handles analytics on live data. No second database, no pipeline, no new query language. Same SQL you already write. Start building for free.

Tiger Data (creators of TimescaleDB) sponsor

Making Materialized View Refreshes O(delta) Instead of O(total) — Every time you refresh a materialized view, it recomputes the entire dataset, even if only a single row changed. A patch, being discussed on pgsql-hackers, adds a WHERE clause to REFRESH MATERIALIZED VIEW so refreshes only touch rows that changed. This writeup includes trigger patterns for both immediate and deferred maintenance, useful even without the patch landing in core.

Adam Brusselback

💡 pg_ivm offers similar functionality as an extension, though with tighter restrictions on supported SQL syntax.

Understanding Postgres Wait Events — When a query slows down or a database becomes CPU bound, Postgres already knows why. The pg_stat_activity view exposes wait events that show exactly what each session is blocked on at any given moment.

Richard Yen

Checkpoints, Write Storms, and You — When Postgres is forced to checkpoint early (typically when it hits max_wal_size), it drops its usual throttling and flushes aggressively, hammering disk I/O. The default 1GB WAL limit is a common trigger.

Shaun Thomas (pgEdge)

💡 In a follow-up, Jeremy Schneider notes checkpoints aren’t the only source of write storms: setting autovacuum_vacuum_cost_delay to zero can trigger them too.

'I Imported the Linux Kernel into Postgres' — A developer imported the full Linux kernel history into Postgres by way of pgit. A good stress test of pgit and now you can SELECT your way through years of Linux kernel history.

Oliver Seifert

The 1 GB Limit That Breaks pg_prewarm at Scalepg_prewarm can reload buffer caches after a restart to maintain performance. But on Postgres 16 versions <16.10, if shared_buffers is over ~429GB, pg_prewarm fails and makes the server unreachable. Here's why, and what to do about it.

Warda Bibi

📄 Less Obvious Things to Know About Indexes – Quick insights into composite index ordering, function calls on columns, and indexing rows you’ll never query. Jon Charter

📄 Rotating Postgres Credentials in Production Without Downtime ElyDB Team

📄 Waiting for Postgres 19: New pg_get_*_ddl() Functions Hubert Lubaczewski

RELEASES AND CODE:

pg_6502: A 6502 CPU Emulator Running Entirely Inside Postgres — Every CPU register, every flag, and 64KB of memory are Postgres tables; every 6502 opcode is a stored procedure. A fun hack showcasing how far you can push PL/pgSQL.

lasect

💳 Supabase Transfers the Stripe Sync Engine to StripeStripe Sync Engine, originally created by Supabase as a way to synchronize a Stripe account with a Postgres database, is now an official Stripe project.

Supabase

Skunk 1.0: A Pure Functional Postgres Driver for ScalaSkunk is a pure functional, non-blocking Postgres driver for Scala that now supports Scala 2.13 and 3 across JVM, JS, and Scala Native 0.5.

Michael Pilquist (Typelevel)