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_typetext
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.objecttext
Target object of an I/O operation. Possible values are: relation: Permanent relations. temp relation: Temporary relations. wal: Write Ahead Logs.contexttext
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.readsbigint
Number of read operations.read_bytesnumeric
The total size of read operations in bytes.read_timedouble 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)writesbigint
Number of write operations.write_bytesnumeric
The total size of write operations in bytes.write_timedouble 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)writebacksbigint
Number of units of size BLCKSZ (typically 8kB) which the process requested the kernel write out to permanent storage.writeback_timedouble 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.extendsbigint
Number of relation extend operations.extend_bytesnumeric
The total size of relation extend operations in bytes.extend_timedouble 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)hitsbigint
The number of times a desired block was found in a shared buffer.evictionsbigint
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.reusesbigint
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.fsyncsbigint
Number of fsync calls. These are only tracked in context normal.fsync_timedouble 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_resettimestamp 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.