pg_stat_io — PostgreSQL statistics view

The PostgreSQL pg_stat_io statistics view: full column reference (names, types, descriptions), catalog relationships and version support.

Summary

The pg_stat_io view will contain one row for each combination of backend type, target I/O object, and I/O context, showing cluster-wide I/O statistics. Combinations which do not make sense are omitted.

(Description quoted from the official PostgreSQL documentation.)

Columns

The pg_stat_io statistics view exposes the following columns (names, types and descriptions are taken verbatim from the PostgreSQL documentation):

  • backend_type text
    Type of backend (e.g. background worker, autovacuum worker). See pg_stat_activity for more information on backend_types. Some backend_types do not accumulate I/O operation statistics and will not be included in the view.
  • object text
    Target object of an I/O operation. Possible values are: relation: Permanent relations. temp relation: Temporary relations. wal: Write Ahead Logs.
  • context text
    The context of an I/O operation. Possible values are: normal: The default or standard context for a type of I/O operation. For example, by default, relation data is read into and written out from shared buffers. Thus, reads and writes of relation data to and from shared buffers are tracked in context normal. init: I/O operations performed while creating the WAL segments are tracked in context init. vacuum: I/O operations performed outside of shared buffers while vacuuming and analyzing permanent relations. Temporary table vacuums use the same local buffer pool as other temporary table I/O operations and are tracked in context normal. bulkread: Certain large read I/O operations done outside of shared buffers, for example, a sequential scan of a large table. bulkwrite: Certain large write I/O operations done outside of shared buffers, such as COPY.
  • reads bigint
    Number of read operations.
  • read_bytes numeric
    The total size of read operations in bytes.
  • read_time double precision
    Time spent waiting for read operations in milliseconds (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)
  • writes bigint
    Number of write operations.
  • write_bytes numeric
    The total size of write operations in bytes.
  • write_time double precision
    Time spent waiting for write operations in milliseconds (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)
  • writebacks bigint
    Number of units of size BLCKSZ (typically 8kB) which the process requested the kernel write out to permanent storage.
  • writeback_time double precision
    Time spent waiting for writeback operations in milliseconds (if track_io_timing is enabled, otherwise zero). This includes the time spent queueing write-out requests and, potentially, the time spent to write out the dirty data.
  • extends bigint
    Number of relation extend operations.
  • extend_bytes numeric
    The total size of relation extend operations in bytes.
  • extend_time double precision
    Time spent waiting for extend operations in milliseconds. (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)
  • hits bigint
    The number of times a desired block was found in a shared buffer.
  • evictions bigint
    Number of times a block has been written out from a shared or local buffer in order to make it available for another use. In context normal, this counts the number of times a block was evicted from a buffer and replaced with another block. In contexts bulkwrite, bulkread, and vacuum, this counts the number of times a block was evicted from shared buffers in order to add the shared buffer to a separate, size-limited ring buffer for use in a bulk I/O operation.
  • reuses bigint
    The number of times an existing buffer in a size-limited ring buffer outside of shared buffers was reused as part of an I/O operation in the bulkread, bulkwrite, or vacuum contexts.
  • fsyncs bigint
    Number of fsync calls. These are only tracked in context normal.
  • fsync_time double precision
    Time spent waiting for fsync operations in milliseconds (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)
  • stats_reset timestamp with time zone
    Time at which these statistics were last reset.

Version applicability

Present in PostgreSQL 17, 18, 19 (verified against each release’s documentation). This is a long-standing system object that also exists in earlier PostgreSQL releases.

Related & references

Reference: PostgreSQL documentation — pg_stat_io.