For about fifteen years, the standard answer to “this table is bloated, what do I actually do about it” has been one of the out-of-tree options: pg_repack (the extension), pg_squeeze (Antonin Houska’s predecessor work), or a hand-rolled CREATE TABLE AS and swap. PG19 changes that. The new built-in REPACK command absorbs the work VACUUM FULL and CLUSTER already did, and
The archiver only runs when a WAL segment is complete. On a busy database that happens constantly; on a quiet one it might not happen for hours or days. archive_timeout exists to prevent the resulting “our database has been accepting writes all afternoon but none of them are in the archive yet” problem.
First in a series of dispassionate surveys of the major managed-Postgres offerings. This post is about Amazon RDS for PostgreSQL — what AWS calls “traditional RDS,” as distinct from Aurora PostgreSQL, which is a separate product with a separate architecture and will get its own post.
Stephen O’Grady’s State of Open Source Licensing in 2026 at RedMonk is essential reading. The headline finding — that the long shift from copyleft to permissive licensing has continued, with Apache and MIT consolidating their dominance among the survivors — surprises no one who has been watching the space. The interesting question, as always, is what the data leaves out.
PostgreSQL 19 ships with parallel autovacuum. The new GUC autovacuum_max_parallel_workers caps the cluster-wide pool, and the per-table storage parameter autovacuum_parallel_workers lets you tune individual tables. Workers come out of the existing max_parallel_workers budget. Off by default. Good.
This is a real improvement, and a lot of people are going to turn it on for the wrong reasons.
archive_mode is the master switch for WAL archiving. With the last three posts under our belts — archive_cleanup_command, archive_command, archive_library — we now get to the parameter that decides whether any of that machinery runs at all.
Three values: off (default), on, and always. Context is postmaster, which means flipping it requires a server
Yesterday David Steele announced that he is stepping away from pgBackRest. After thirteen years, the most widely-deployed dedicated backup tool in the PostgreSQL ecosystem is no longer maintained. The current release, v2.58.0, is the last release. Steele asks that any forks pick a new name, which is — among other things — an act of professional courtesy from a maintainer
For about fifteen years the answer to “can I turn on data checksums without an initdb?” has been “not really.” pg_checksums showed up in PostgreSQL 12 and made the job survivable, but you still had to shut the cluster down. For anyone running 24×7 production, that has left the same three options: take the downtime, fail over through a
For thirty years, the answer to “how do I get the DDL for this object?” in PostgreSQL has been: shell out to pg_dump -s and grep. Every tool that has ever needed to reconstruct an object definition — migration tools, schema diff utilities, \d replacements, every ORM that has tried to introspect a live database — has either invoked pg_dump
Before getting into this one, an errata against the previous post. I said backup tools “can register as an archive_library and bypass archive_command entirely” on PostgreSQL 15+. That is what the feature was designed to enable. It is not what the ecosystem has actually shipped. More on that in a moment.