Skip to content
dbexplore

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  • EXPLAIN
  • apply_error_count
  • archive_command
  • archive_library
  • archive_mode
  • backend_type
  • boot_val
  • checkpoints_req
  • full_page_writes
  • jit_emission_count
  • jit_functions
  • jit_generation_time
  • jit_inlining_count
  • jit_optimization_count
  • log_autovacuum_min_duration
  • log_checkpoints
  • pg_extension
  • pg_ls_dir
  • pg_reload_conf
  • pg_settings
  • pg_stat_activity
  • pg_stat_archiver
  • pg_stat_bgwriter
  • pg_stat_clear_snapshot
  • pg_stat_reset_subscription_stats
  • pg_stat_statements
  • pg_stat_subscription
  • pg_stat_subscription_stats
  • pg_stat_tmp
  • pg_stat_wal
  • pg_subscription
  • source
  • stats_fetch_consistency
  • stats_temp_directory
  • sync_error_count
  • temp_blk_read_time
  • temp_blk_write_time
  • temp_blks_read
  • temp_blks_written
  • track_counts
  • wait_event
  • wal_bytes
  • wal_compression
  • wal_fpi
  • work_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.