Skip to content
dbexplore

PostgreSQL 14

What PostgreSQL 14 changed in monitoring

Released 30 September 2021, supported until 12 November 2026. 11 pages so far, each verified against PostgreSQL 14.24.

PostgreSQL 14 leaves support on 12 November 2026, and the pages under this hub are written with that in mind: what 14 introduced, and what changed after it that an upgrade will meet. It was the release that put a query identifier in the activity view and in the log line prefix, so a slow statement seen live could be matched to its row in the statements extension without fuzzy matching on text. It added a view of write-ahead log generation, a view of replication slot statistics, progress reporting for bulk copies, and a view of a backend’s memory contexts that had previously needed a debugger. Vacuum gained a failsafe that abandons cost limits when a table is close to wraparound. Lock rows started recording when the wait began. Each of those has a page that shows the query on 14 and says what became of it on the versions after, because a fleet leaving 14 has four majors of monitoring change to absorb in one step.

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 14 breaks: errors

    The PostgreSQL 14 end-of-life audit

    For anyone who owns clusters still on PostgreSQL 14 and has to decide what to look at before moving them.

  2. PostgreSQL 14 breaks: silent

    compute_query_id moved into the server

    For anyone who has tried to work out whether the session blocking everything right now is usually this slow.

  3. PostgreSQL 14 breaks: errors

    pg_stat_wal, and the columns 18 takes back

    For anyone whose storage bill or replication lag is really a question about how much log the workload writes.

  4. PostgreSQL 14 breaks: silent

    pg_stat_replication_slots and decoding spill

    For anyone whose logical replica falls behind in bursts that do not line up with anything the primary was doing.

  5. PostgreSQL 14 breaks: none

    pg_stat_progress_copy, and the frozen row

    For anyone who has been asked how much longer the restore has left and had only the file size to go on.

  6. PostgreSQL 14 breaks: errors

    Reading a backend's memory from SQL

    For anyone who has watched one connection grow to a gigabyte and had no way to ask it what it was holding.

  7. PostgreSQL 14 breaks: none

    vacuum_failsafe_age and emergency mode

    For anyone who has watched an autovacuum worker crawl through a large table while the wraparound warning counts down.

  8. PostgreSQL 14 breaks: silent

    toplevel, and the sum that counts twice

    For anyone whose slowest-queries report adds up to more time than the database was actually busy for.

  9. PostgreSQL 14 breaks: none

    Lock waits got a start time in pg_locks

    For anyone who has looked at a blocking chain and had no way to tell which link had been stuck longest.

  10. PostgreSQL 14 breaks: none

    Session statistics in pg_stat_database

    For anyone who suspects connections are ending badly and has only the log to prove it with.

  11. PostgreSQL 14 breaks: none

    pg_amcheck runs verification in one command

    For anyone who has been told to verify a database and found only a function that takes one relation at a time.

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 VERBOSE
  • active_time
  • amcheck
  • autovacuum_freeze_max_age
  • blk_read_time
  • bt_index_check
  • bt_index_parent_check
  • buffers_backend
  • bytes_processed
  • bytes_total
  • checkpoints_timed
  • compute_query_id
  • dealloc
  • idle_in_transaction_time
  • level
  • log_line_prefix
  • max_dead_tuples
  • name
  • parent
  • pg_amcheck
  • pg_backend_memory_contexts
  • pg_blocking_pids
  • pg_class.relfrozenxid
  • pg_locks.fastpath
  • pg_locks.granted
  • pg_locks.waitstart
  • pg_log_backend_memory_contexts
  • pg_replication_slots
  • pg_stat_activity.query_id
  • pg_stat_activity.wait_event
  • pg_stat_bgwriter
  • pg_stat_clear_snapshot
  • pg_stat_database.sessions
  • pg_stat_progress_copy
  • pg_stat_progress_vacuum
  • pg_stat_replication_slots
  • pg_stat_reset_replication_slot
  • pg_stat_statements
  • pg_stat_statements.max
  • pg_stat_statements.queryid
  • pg_stat_statements.toplevel
  • pg_stat_statements.track
  • pg_stat_statements_info
  • pg_stat_wal
  • session_time
  • sessions_abandoned
  • sessions_fatal
  • sessions_killed
  • spill_bytes
  • spill_count
  • spill_txns
  • stats_fetch_consistency
  • stream_txns
  • total_bytes
  • tuples_excluded
  • tuples_processed
  • tuples_skipped
  • used_bytes
  • vacuum_cost_delay
  • vacuum_failsafe_age
  • vacuum_multixact_failsafe_age
  • verify_heapam
  • wal_buffers_full
  • wal_bytes
  • wal_fpi
  • wal_records
  • wal_sync
  • wal_sync_time
  • wal_write
  • wal_write_time

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.