· 2 min read

All Your GUCs in a Row: archive_mode

A photorealistic 35mm photograph a male muscovy duck riding in a library cart, being pushed by an indian runner duck with its bill.

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

0 comments

· 8 min read

Notice of Obsolescence

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

0 comments

· 2 min read

Retail DDL Arrives, One Function at a Time

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

0 comments

· 3 min read

Online Checksums Are Not Instant

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

0 comments

· 2 min read

All Your GUCs in a Row: archive_library

A photorealistic 35mm photograph of a female mandarin duck standing in the stacks of an old college library, looking about with wonder.

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.

archive_library, added in PostgreSQL 15, lets you

0 comments

· 2 min read

All Your GUCs in a Row: archive_command

A photorealistic 35mm photograph of a male mallard duck rummaging through a card catalog at a very old, stately college library.

Last post’s deferred party has arrived. archive_command is how WAL segments leave the primary and travel somewhere durable — the substrate on top of which point-in-time recovery, warm standbys, and every serious backup tool are built. It is also, in the classic formulation, a shell command written on one line of postgresql.conf. This is as terrifying as it sounds.

0 comments

· 2 min read

All your GUCs in a Row: archive_cleanup_command

Alphabetical order delivers our first casualty. archive_cleanup_command is a standby-server knob that exists entirely to tidy up after archive_command, which the alphabet insists on deferring until the next post. So we will describe how to sweep up a party we have not yet thrown.

The briefest-possible backfill: a PostgreSQL primary can archive its WAL segments to some location

0 comments

· 3 min read

Postgres Goes to the Lake, Two Ways

A serene alpine lake, at early morning. A small family of elephants is splashing around in the lake, having a great time.

Last year’s acquisitions have now shipped products, and for the first time it is possible to compare the Snowflake and Databricks “Postgres-in-the-lakehouse” strategies as real things rather than as marketing decks.

The acquisitions: Snowflake bought Crunchy Data in June 2025 (around $250M) and released pg_lake as open source under Snowflake-Labs in November. Databricks bought Neon in May 2025 (around

0 comments

· 10 min read

Huge Pages, End to End

A blue elephant in a cube, covered huge pages (get it?) covered with ones and zeros.

The previous post on the Linux 7.0 pgbench regression ended with the same instruction every other Postgres performance post ends with: set huge pages. This post is the long version. If you have read the Postgres docs on huge_pages and you’re still not completely sure what /proc/meminfo is telling you, what the relationship is between vm.nr_hugepages and Transparent Huge

0 comments

· 3 min read

All Your GUCs in a Row: application_name

Most GUCs in this series will be operationally irrelevant to most readers. This one is not. application_name is the single cheapest piece of observability infrastructure PostgreSQL ships, and an astonishing number of production databases are running with it unset or stuck at a client library’s default (psql, PostgreSQL JDBC Driver, or — my favorite — the empty

0 comments