PostgreSQL 15
What PostgreSQL 15 changed in monitoring
Released 13 October 2022, supported until 11 November 2027. 8 pages so far, each verified against PostgreSQL 15.19.
PostgreSQL 15 replaced the statistics collector process with shared memory, and although no view was renamed for it, the change is felt in monitoring. Statistics no longer travel through a UDP socket to a separate process, so the lag between an event and its appearance in a view shrank, and a new setting decides whether a transaction sees one consistent snapshot of the counters or the live values as they change. The statements extension gained columns for just-in-time compilation and for temporary block timing. Structured logging arrived as a JSON format alongside the text and CSV ones. Recovery gained prefetching with a view of its own, which matters on a standby that cannot keep up with a primary it is otherwise idle behind. Two changes are about behaviour rather than reporting and still land on an operator: the public schema no longer grants create to every user, and the archive command can be a loadable library rather than a shell string. The pages under this hub are the ones where a 15 server answers a monitoring question differently from a 14 one.
The release notes for this version are at postgresql.org; every page below cites the section it draws on by name. The hub for every supported version carries the support calendar.
-
PostgreSQL 15 breaks: errors
The statistics collector process is gone
For anyone who mounted a ramdisk on the statistics directory years ago and has never had a reason to think about it since.
-
PostgreSQL 15 breaks: none
The default that freezes your counters
For anyone who has watched a counter inside a transaction, seen it refuse to move, and blamed the counter.
-
PostgreSQL 15 breaks: none
JIT counters, and the extension version trap
For anyone who has suspected that JIT compilation is costing more than it saves and had no per-statement evidence either way.
-
PostgreSQL 15 breaks: silent
The spill that was never on the clock
For anyone who has watched a sort spill to disk and had no number for what the spilling actually cost.
-
PostgreSQL 15 breaks: none
The view that shows a subscriber looping
For anyone running logical replication whose only health check is whether the subscription still exists.
-
PostgreSQL 15 breaks: none
When wal_compression stopped being a boolean
For anyone whose write-ahead log volume is the reason their archive bill or their replication lag is what it is.
-
PostgreSQL 15 breaks: none
The archiver says what it is waiting on
For anyone whose archive command is a shell script and whose only evidence about it is a counter that has stopped rising.
-
PostgreSQL 15 breaks: none
The idle server that started writing logs
For anyone who has tried to tune checkpoints from counters alone because the log had nothing in it.
Grep your monitoring configuration for these
Every view, column and setting the pages above touch, in one list. A hit in an exporter query file, a dashboard definition or an alert rule is a place to read the page that names it.
EXPLAINapply_error_countarchive_commandarchive_libraryarchive_modebackend_typeboot_valcheckpoints_reqfull_page_writesjit_emission_countjit_functionsjit_generation_timejit_inlining_countjit_optimization_countlog_autovacuum_min_durationlog_checkpointspg_extensionpg_ls_dirpg_reload_confpg_settingspg_stat_activitypg_stat_archiverpg_stat_bgwriterpg_stat_clear_snapshotpg_stat_reset_subscription_statspg_stat_statementspg_stat_subscriptionpg_stat_subscription_statspg_stat_tmppg_stat_walpg_subscriptionsourcestats_fetch_consistencystats_temp_directorysync_error_counttemp_blk_read_timetemp_blk_write_timetemp_blks_readtemp_blks_writtentrack_countswait_eventwal_byteswal_compressionwal_fpiwork_mem
The failure modes these changes touch are in the reference guides; the terms the release notes assume are in the glossary. Across a fleet, the version is what decides where a signal lives, which is why engine discovery establishes it first.
Put every Postgres you run on autopilot.
We onboard teams in small batches. Tell us about your fleet and we will reach out when a seat opens. One email, no drip campaign.