Skip to content
← Catalog atlas / pg_stat_replication

STATISTICS VIEW · Statistics view

pg_stat_replication

The pg_stat_replication view will contain one row per WAL sender process, showing statistics about replication to that sender's connected standby server. Only directly connected standbys are listed; no information is available about downstream standby servers. The lag times reported in the pg_stat_replication view are measurements of the time taken for recent WAL to be written, flushed and replayed and for the sender to know about it. These times represent the commit delay that was (or would have been) introduced by each synchronous commit level, if the remote server was configured as a synchronous standby. For an asynchronous standby, the replay_lag column approximates the delay before recent transactions became visible to queries. If the standby server has entirely caught up with the sending server and there is no more WAL activity, the most recently measured lag times will continue to be displayed for a short time and then show NULL. Lag times work automatically for physical replication. Logical decoding plugins may optionally emit tracking messages; if they do not, the tracking mechanism will simply display NULL lag.

First seen PG 9.1Last seen PG 19Columns 20

Checked column by column against a PostgreSQL 18.6 instance · Raw measurement record ↗

Columns PostgreSQL 18

pg_stat_replication
COLUMNTYPEDESCRIPTION
pid integer Process ID of a WAL sender process
usesysid oid OID of the user logged into this WAL sender process
usename name Name of the user logged into this WAL sender process
application_name text Name of the application that is connected to this WAL sender
client_addr inet IP address of the client connected to this WAL sender. If this field is null, it indicates that the client is connected via a Unix socket on the server machine.
client_hostname text Host name of the connected client, as reported by a reverse DNS lookup of client_addr. This field will only be non-null for IP connections, and only when log_hostname is enabled.
client_port integer TCP port number that the client is using for communication with this WAL sender, or -1 if a Unix socket is used
backend_start timestamp with time zone Time when this process was started, i.e., when the client connected to this WAL sender
backend_xmin xid This standby's xmin horizon reported by hot_standby_feedback.
state text Current WAL sender state. Possible values are:
sent_lsn pg_lsn Last write-ahead log location sent on this connection
write_lsn pg_lsn Last write-ahead log location written to disk by this standby server
flush_lsn pg_lsn Last write-ahead log location flushed to disk by this standby server
replay_lsn pg_lsn Last write-ahead log location replayed into the database on this standby server
write_lag interval Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written it (but not yet flushed it or applied it). This can be used to gauge the delay that synchronous_commit level remote_write incurred while committing if this server was configured as a synchronous standby.
flush_lag interval Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written and flushed it (but not yet applied it). This can be used to gauge the delay that synchronous_commit level on incurred while committing if this server was configured as a synchronous standby.
replay_lag interval Time elapsed between flushing recent WAL locally and receiving notification that this standby server has written, flushed and applied it. This can be used to gauge the delay that synchronous_commit level remote_apply incurred while committing if this server was configured as a synchronous standby.
sync_priority integer Priority of this standby server for being chosen as the synchronous standby in a priority-based synchronous replication. This has no effect in a quorum-based synchronous replication.
sync_state text Synchronous state of this standby server. Possible values are:
reply_time timestamp with time zone Send time of last reply message received from standby server

Columns marked "implicit" are not included in SELECT *; some early statistics views are completed from same-version source, and the extra provenance is shown in the column description.

Column evolution matrix

Hover a cell for the column type
PresentAdded / type or attribute changeRemoved
COLUMN9.09.19.29.39.49.59.610111213141516171819
procpid
usesysid
usename
application_name
client_addr
client_hostname
client_port
backend_start
state
sent_location
write_location
flush_location
replay_location
sync_priority
sync_state
pid
backend_xmin
sent_lsn
write_lsn
flush_lsn
replay_lsn
write_lag
flush_lag
replay_lag
reply_time

9.0 is the coverage baseline; a column already present in the baseline is not marked as added. The matrix aligns columns by name, so a rename appears as the old column removed and a new column added.

Evolution timeline

Changes between adjacent majors

PostgreSQL 19 ← 18

1 column description updates

PostgreSQL 13 ← 12

2 column description updatesCatalog description updated

PostgreSQL 12 ← 11

+ reply_timeCatalog description updated

PostgreSQL 10 ← 9.6

+ sent_lsn+ write_lsn+ flush_lsn+ replay_lsn+ write_lag+ flush_lag+ replay_lag− sent_location− write_location− flush_location− replay_location3 column description updatesCatalog description updated

PostgreSQL 9.6 ← 9.5

Catalog description updated

PostgreSQL 9.5 ← 9.4

Catalog description updated

PostgreSQL 9.4 ← 9.3

+ backend_xmin~ flush_location: text → pg_lsn~ replay_location: text → pg_lsn~ sent_location: text → pg_lsn~ write_location: text → pg_lsnCatalog description updated

PostgreSQL 9.2 ← 9.1

+ pid− procpid1 column description updatesCatalog description updated

PostgreSQL 9.1 ← 9.0Catalog added

+ procpid+ usesysid+ usename+ application_name+ client_addr+ client_hostname+ client_port+ backend_start+ state+ sent_location+ write_location+ flush_location+ replay_location+ sync_priority+ sync_state

Compare any two versions

Pick two versions to see added, removed, and retyped columns. The interactive comparison needs JavaScript; the evolution timeline reads fine without it.