| Server IP : 104.21.25.180 / Your IP : 104.23.197.123 Web Server : Apache/2.4.37 System : Linux almalinux.duckdns.org 4.18.0-553.111.1.el8_10.x86_64 #1 SMP Sun Mar 8 20:06:07 EDT 2026 x86_64 User : ricodeal ( 1046) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/postgresql-docs/html/ |
Upload File : |
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>28.2. The Statistics Collector</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="[email protected]" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="monitoring-ps.html" title="28.1. Standard Unix Tools" /><link rel="next" href="monitoring-locks.html" title="28.3. Viewing Locks" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">28.2. The Statistics Collector</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="monitoring-ps.html" title="28.1. Standard Unix Tools">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="monitoring.html" title="Chapter 28. Monitoring Database Activity">Up</a></td><th width="60%" align="center">Chapter 28. Monitoring Database Activity</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.23 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="monitoring-locks.html" title="28.3. Viewing Locks">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="MONITORING-STATS"><div class="titlepage"><div><div><h2 class="title" style="clear: both">28.2. The Statistics Collector</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="monitoring-stats.html#MONITORING-STATS-SETUP">28.2.1. Statistics Collection Configuration</a></span></dt><dt><span class="sect2"><a href="monitoring-stats.html#MONITORING-STATS-VIEWS">28.2.2. Viewing Statistics</a></span></dt><dt><span class="sect2"><a href="monitoring-stats.html#MONITORING-STATS-FUNCTIONS">28.2.3. Statistics Functions</a></span></dt></dl></div><a id="id-1.6.15.7.2" class="indexterm"></a><p> <span class="productname">PostgreSQL</span>'s <em class="firstterm">statistics collector</em>
is a subsystem that supports collection and reporting of information about
server activity. Presently, the collector can count accesses to tables
and indexes in both disk-block and individual-row terms. It also tracks
the total number of rows in each table, and information about vacuum and
analyze actions for each table. It can also count calls to user-defined
functions and the total time spent in each one.
</p><p> <span class="productname">PostgreSQL</span> also supports reporting dynamic
information about exactly what is going on in the system right now, such as
the exact command currently being executed by other server processes, and
which other connections exist in the system. This facility is independent
of the collector process.
</p><div class="sect2" id="MONITORING-STATS-SETUP"><div class="titlepage"><div><div><h3 class="title">28.2.1. Statistics Collection Configuration</h3></div></div></div><p> Since collection of statistics adds some overhead to query execution,
the system can be configured to collect or not collect information.
This is controlled by configuration parameters that are normally set in
<code class="filename">postgresql.conf</code>. (See <a class="xref" href="runtime-config.html" title="Chapter 19. Server Configuration">Chapter 19</a> for
details about setting configuration parameters.)
</p><p> The parameter <a class="xref" href="runtime-config-statistics.html#GUC-TRACK-ACTIVITIES">track_activities</a> enables monitoring
of the current command being executed by any server process.
</p><p> The parameter <a class="xref" href="runtime-config-statistics.html#GUC-TRACK-COUNTS">track_counts</a> controls whether
statistics are collected about table and index accesses.
</p><p> The parameter <a class="xref" href="runtime-config-statistics.html#GUC-TRACK-FUNCTIONS">track_functions</a> enables tracking of
usage of user-defined functions.
</p><p> The parameter <a class="xref" href="runtime-config-statistics.html#GUC-TRACK-IO-TIMING">track_io_timing</a> enables monitoring
of block read and write times.
</p><p> Normally these parameters are set in <code class="filename">postgresql.conf</code> so
that they apply to all server processes, but it is possible to turn
them on or off in individual sessions using the <a class="xref" href="sql-set.html" title="SET"><span class="refentrytitle">SET</span></a> command. (To prevent
ordinary users from hiding their activity from the administrator,
only superusers are allowed to change these parameters with
<code class="command">SET</code>.)
</p><p> The statistics collector transmits the collected information to other
<span class="productname">PostgreSQL</span> processes through temporary files.
These files are stored in the directory named by the
<a class="xref" href="runtime-config-statistics.html#GUC-STATS-TEMP-DIRECTORY">stats_temp_directory</a> parameter,
<code class="filename">pg_stat_tmp</code> by default.
For better performance, <code class="varname">stats_temp_directory</code> can be
pointed at a RAM-based file system, decreasing physical I/O requirements.
When the server shuts down cleanly, a permanent copy of the statistics
data is stored in the <code class="filename">pg_stat</code> subdirectory, so that
statistics can be retained across server restarts. When recovery is
performed at server start (e.g., after immediate shutdown, server crash,
and point-in-time recovery), all statistics counters are reset.
</p></div><div class="sect2" id="MONITORING-STATS-VIEWS"><div class="titlepage"><div><div><h3 class="title">28.2.2. Viewing Statistics</h3></div></div></div><p> Several predefined views, listed in <a class="xref" href="monitoring-stats.html#MONITORING-STATS-DYNAMIC-VIEWS-TABLE" title="Table 28.1. Dynamic Statistics Views">Table 28.1</a>, are available to show
the current state of the system. There are also several other
views, listed in <a class="xref" href="monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE" title="Table 28.2. Collected Statistics Views">Table 28.2</a>, available to show the results
of statistics collection. Alternatively, one can
build custom views using the underlying statistics functions, as discussed
in <a class="xref" href="monitoring-stats.html#MONITORING-STATS-FUNCTIONS" title="28.2.3. Statistics Functions">Section 28.2.3</a>.
</p><p> When using the statistics to monitor collected data, it is important
to realize that the information does not update instantaneously.
Each individual server process transmits new statistical counts to
the collector just before going idle; so a query or transaction still in
progress does not affect the displayed totals. Also, the collector itself
emits a new report at most once per <code class="varname">PGSTAT_STAT_INTERVAL</code>
milliseconds (500 ms unless altered while building the server). So the
displayed information lags behind actual activity. However, current-query
information collected by <code class="varname">track_activities</code> is
always up-to-date.
</p><p> Another important point is that when a server process is asked to display
any of these statistics, it first fetches the most recent report emitted by
the collector process and then continues to use this snapshot for all
statistical views and functions until the end of its current transaction.
So the statistics will show static information as long as you continue the
current transaction. Similarly, information about the current queries of
all sessions is collected when any such information is first requested
within a transaction, and the same information will be displayed throughout
the transaction.
This is a feature, not a bug, because it allows you to perform several
queries on the statistics and correlate the results without worrying that
the numbers are changing underneath you. But if you want to see new
results with each query, be sure to do the queries outside any transaction
block. Alternatively, you can invoke
<code class="function">pg_stat_clear_snapshot</code>(), which will discard the
current transaction's statistics snapshot (if any). The next use of
statistical information will cause a new snapshot to be fetched.
</p><p> A transaction can also see its own statistics (as yet untransmitted to the
collector) in the views <code class="structname">pg_stat_xact_all_tables</code>,
<code class="structname">pg_stat_xact_sys_tables</code>,
<code class="structname">pg_stat_xact_user_tables</code>, and
<code class="structname">pg_stat_xact_user_functions</code>. These numbers do not act as
stated above; instead they update continuously throughout the transaction.
</p><div class="table" id="MONITORING-STATS-DYNAMIC-VIEWS-TABLE"><p class="title"><strong>Table 28.1. Dynamic Statistics Views</strong></p><div class="table-contents"><table class="table" summary="Dynamic Statistics Views" border="1"><colgroup><col /><col /></colgroup><thead><tr><th>View Name</th><th>Description</th></tr></thead><tbody><tr><td> <code class="structname">pg_stat_activity</code>
<a id="id-1.6.15.7.6.6.2.2.1.1.2" class="indexterm"></a>
</td><td> One row per server process, showing information related to
the current activity of that process, such as state and current query.
See <a class="xref" href="monitoring-stats.html#PG-STAT-ACTIVITY-VIEW" title="Table 28.3. pg_stat_activity View">pg_stat_activity</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_replication</code><a id="id-1.6.15.7.6.6.2.2.2.1.2" class="indexterm"></a></td><td>One row per WAL sender process, showing statistics about
replication to that sender's connected standby server.
See <a class="xref" href="monitoring-stats.html#PG-STAT-REPLICATION-VIEW" title="Table 28.5. pg_stat_replication View">pg_stat_replication</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_wal_receiver</code><a id="id-1.6.15.7.6.6.2.2.3.1.2" class="indexterm"></a></td><td>Only one row, showing statistics about the WAL receiver from
that receiver's connected server.
See <a class="xref" href="monitoring-stats.html#PG-STAT-WAL-RECEIVER-VIEW" title="Table 28.6. pg_stat_wal_receiver View">pg_stat_wal_receiver</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_subscription</code><a id="id-1.6.15.7.6.6.2.2.4.1.2" class="indexterm"></a></td><td>At least one row per subscription, showing information about
the subscription workers.
See <a class="xref" href="monitoring-stats.html#PG-STAT-SUBSCRIPTION" title="Table 28.7. pg_stat_subscription View">pg_stat_subscription</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_ssl</code><a id="id-1.6.15.7.6.6.2.2.5.1.2" class="indexterm"></a></td><td>One row per connection (regular and replication), showing information about
SSL used on this connection.
See <a class="xref" href="monitoring-stats.html#PG-STAT-SSL-VIEW" title="Table 28.8. pg_stat_ssl View">pg_stat_ssl</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_progress_vacuum</code><a id="id-1.6.15.7.6.6.2.2.6.1.2" class="indexterm"></a></td><td>One row for each backend (including autovacuum worker processes) running
<code class="command">VACUUM</code>, showing current progress.
See <a class="xref" href="progress-reporting.html#VACUUM-PROGRESS-REPORTING" title="28.4.1. VACUUM Progress Reporting">Section 28.4.1</a>.
</td></tr></tbody></table></div></div><br class="table-break" /><div class="table" id="MONITORING-STATS-VIEWS-TABLE"><p class="title"><strong>Table 28.2. Collected Statistics Views</strong></p><div class="table-contents"><table class="table" summary="Collected Statistics Views" border="1"><colgroup><col /><col /></colgroup><thead><tr><th>View Name</th><th>Description</th></tr></thead><tbody><tr><td><code class="structname">pg_stat_archiver</code><a id="id-1.6.15.7.6.7.2.2.1.1.2" class="indexterm"></a></td><td>One row only, showing statistics about the
WAL archiver process's activity. See
<a class="xref" href="monitoring-stats.html#PG-STAT-ARCHIVER-VIEW" title="Table 28.9. pg_stat_archiver View">pg_stat_archiver</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_bgwriter</code><a id="id-1.6.15.7.6.7.2.2.2.1.2" class="indexterm"></a></td><td>One row only, showing statistics about the
background writer process's activity. See
<a class="xref" href="monitoring-stats.html#PG-STAT-BGWRITER-VIEW" title="Table 28.10. pg_stat_bgwriter View">pg_stat_bgwriter</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_database</code><a id="id-1.6.15.7.6.7.2.2.3.1.2" class="indexterm"></a></td><td>One row per database, showing database-wide statistics. See
<a class="xref" href="monitoring-stats.html#PG-STAT-DATABASE-VIEW" title="Table 28.11. pg_stat_database View">pg_stat_database</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_database_conflicts</code><a id="id-1.6.15.7.6.7.2.2.4.1.2" class="indexterm"></a></td><td> One row per database, showing database-wide statistics about
query cancels due to conflict with recovery on standby servers.
See <a class="xref" href="monitoring-stats.html#PG-STAT-DATABASE-CONFLICTS-VIEW" title="Table 28.12. pg_stat_database_conflicts View">pg_stat_database_conflicts</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_all_tables</code><a id="id-1.6.15.7.6.7.2.2.5.1.2" class="indexterm"></a></td><td> One row for each table in the current database, showing statistics
about accesses to that specific table.
See <a class="xref" href="monitoring-stats.html#PG-STAT-ALL-TABLES-VIEW" title="Table 28.13. pg_stat_all_tables View">pg_stat_all_tables</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_sys_tables</code><a id="id-1.6.15.7.6.7.2.2.6.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_stat_all_tables</code>, except that only
system tables are shown.</td></tr><tr><td><code class="structname">pg_stat_user_tables</code><a id="id-1.6.15.7.6.7.2.2.7.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_stat_all_tables</code>, except that only user
tables are shown.</td></tr><tr><td><code class="structname">pg_stat_xact_all_tables</code><a id="id-1.6.15.7.6.7.2.2.8.1.2" class="indexterm"></a></td><td>Similar to <code class="structname">pg_stat_all_tables</code>, but counts actions
taken so far within the current transaction (which are <span class="emphasis"><em>not</em></span>
yet included in <code class="structname">pg_stat_all_tables</code> and related views).
The columns for numbers of live and dead rows and vacuum and
analyze actions are not present in this view.</td></tr><tr><td><code class="structname">pg_stat_xact_sys_tables</code><a id="id-1.6.15.7.6.7.2.2.9.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_stat_xact_all_tables</code>, except that only
system tables are shown.</td></tr><tr><td><code class="structname">pg_stat_xact_user_tables</code><a id="id-1.6.15.7.6.7.2.2.10.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_stat_xact_all_tables</code>, except that only
user tables are shown.</td></tr><tr><td><code class="structname">pg_stat_all_indexes</code><a id="id-1.6.15.7.6.7.2.2.11.1.2" class="indexterm"></a></td><td> One row for each index in the current database, showing statistics
about accesses to that specific index.
See <a class="xref" href="monitoring-stats.html#PG-STAT-ALL-INDEXES-VIEW" title="Table 28.14. pg_stat_all_indexes View">pg_stat_all_indexes</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_sys_indexes</code><a id="id-1.6.15.7.6.7.2.2.12.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_stat_all_indexes</code>, except that only
indexes on system tables are shown.</td></tr><tr><td><code class="structname">pg_stat_user_indexes</code><a id="id-1.6.15.7.6.7.2.2.13.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_stat_all_indexes</code>, except that only
indexes on user tables are shown.</td></tr><tr><td><code class="structname">pg_statio_all_tables</code><a id="id-1.6.15.7.6.7.2.2.14.1.2" class="indexterm"></a></td><td> One row for each table in the current database, showing statistics
about I/O on that specific table.
See <a class="xref" href="monitoring-stats.html#PG-STATIO-ALL-TABLES-VIEW" title="Table 28.15. pg_statio_all_tables View">pg_statio_all_tables</a> for details.
</td></tr><tr><td><code class="structname">pg_statio_sys_tables</code><a id="id-1.6.15.7.6.7.2.2.15.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_statio_all_tables</code>, except that only
system tables are shown.</td></tr><tr><td><code class="structname">pg_statio_user_tables</code><a id="id-1.6.15.7.6.7.2.2.16.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_statio_all_tables</code>, except that only
user tables are shown.</td></tr><tr><td><code class="structname">pg_statio_all_indexes</code><a id="id-1.6.15.7.6.7.2.2.17.1.2" class="indexterm"></a></td><td> One row for each index in the current database,
showing statistics about I/O on that specific index.
See <a class="xref" href="monitoring-stats.html#PG-STATIO-ALL-INDEXES-VIEW" title="Table 28.16. pg_statio_all_indexes View">pg_statio_all_indexes</a> for details.
</td></tr><tr><td><code class="structname">pg_statio_sys_indexes</code><a id="id-1.6.15.7.6.7.2.2.18.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_statio_all_indexes</code>, except that only
indexes on system tables are shown.</td></tr><tr><td><code class="structname">pg_statio_user_indexes</code><a id="id-1.6.15.7.6.7.2.2.19.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_statio_all_indexes</code>, except that only
indexes on user tables are shown.</td></tr><tr><td><code class="structname">pg_statio_all_sequences</code><a id="id-1.6.15.7.6.7.2.2.20.1.2" class="indexterm"></a></td><td> One row for each sequence in the current database,
showing statistics about I/O on that specific sequence.
See <a class="xref" href="monitoring-stats.html#PG-STATIO-ALL-SEQUENCES-VIEW" title="Table 28.17. pg_statio_all_sequences View">pg_statio_all_sequences</a> for details.
</td></tr><tr><td><code class="structname">pg_statio_sys_sequences</code><a id="id-1.6.15.7.6.7.2.2.21.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_statio_all_sequences</code>, except that only
system sequences are shown. (Presently, no system sequences are defined,
so this view is always empty.)</td></tr><tr><td><code class="structname">pg_statio_user_sequences</code><a id="id-1.6.15.7.6.7.2.2.22.1.2" class="indexterm"></a></td><td>Same as <code class="structname">pg_statio_all_sequences</code>, except that only
user sequences are shown.</td></tr><tr><td><code class="structname">pg_stat_user_functions</code><a id="id-1.6.15.7.6.7.2.2.23.1.2" class="indexterm"></a></td><td> One row for each tracked function, showing statistics
about executions of that function. See
<a class="xref" href="monitoring-stats.html#PG-STAT-USER-FUNCTIONS-VIEW" title="Table 28.18. pg_stat_user_functions View">pg_stat_user_functions</a> for details.
</td></tr><tr><td><code class="structname">pg_stat_xact_user_functions</code><a id="id-1.6.15.7.6.7.2.2.24.1.2" class="indexterm"></a></td><td>Similar to <code class="structname">pg_stat_user_functions</code>, but counts only
calls during the current transaction (which are <span class="emphasis"><em>not</em></span>
yet included in <code class="structname">pg_stat_user_functions</code>).</td></tr></tbody></table></div></div><br class="table-break" /><p> The per-index statistics are particularly useful to determine which
indexes are being used and how effective they are.
</p><p> The <code class="structname">pg_statio_</code> views are primarily useful to
determine the effectiveness of the buffer cache. When the number
of actual disk reads is much smaller than the number of buffer
hits, then the cache is satisfying most read requests without
invoking a kernel call. However, these statistics do not give the
entire story: due to the way in which <span class="productname">PostgreSQL</span>
handles disk I/O, data that is not in the
<span class="productname">PostgreSQL</span> buffer cache might still reside in the
kernel's I/O cache, and might therefore still be fetched without
requiring a physical read. Users interested in obtaining more
detailed information on <span class="productname">PostgreSQL</span> I/O behavior are
advised to use the <span class="productname">PostgreSQL</span> statistics collector
in combination with operating system utilities that allow insight
into the kernel's handling of I/O.
</p><div class="table" id="PG-STAT-ACTIVITY-VIEW"><p class="title"><strong>Table 28.3. <code class="structname">pg_stat_activity</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_activity View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">datid</code></td><td><code class="type">oid</code></td><td>OID of the database this backend is connected to</td></tr><tr><td><code class="structfield">datname</code></td><td><code class="type">name</code></td><td>Name of the database this backend is connected to</td></tr><tr><td><code class="structfield">pid</code></td><td><code class="type">integer</code></td><td>Process ID of this backend</td></tr><tr><td><code class="structfield">usesysid</code></td><td><code class="type">oid</code></td><td>OID of the user logged into this backend</td></tr><tr><td><code class="structfield">usename</code></td><td><code class="type">name</code></td><td>Name of the user logged into this backend</td></tr><tr><td><code class="structfield">application_name</code></td><td><code class="type">text</code></td><td>Name of the application that is connected
to this backend</td></tr><tr><td><code class="structfield">client_addr</code></td><td><code class="type">inet</code></td><td>IP address of the client connected to this backend.
If this field is null, it indicates either that the client is
connected via a Unix socket on the server machine or that this is an
internal process such as autovacuum.
</td></tr><tr><td><code class="structfield">client_hostname</code></td><td><code class="type">text</code></td><td>Host name of the connected client, as reported by a
reverse DNS lookup of <code class="structfield">client_addr</code>. This field will
only be non-null for IP connections, and only when <a class="xref" href="runtime-config-logging.html#GUC-LOG-HOSTNAME">log_hostname</a> is enabled.
</td></tr><tr><td><code class="structfield">client_port</code></td><td><code class="type">integer</code></td><td>TCP port number that the client is using for communication
with this backend, or <code class="literal">-1</code> if a Unix socket is used
</td></tr><tr><td><code class="structfield">backend_start</code></td><td><code class="type">timestamp with time zone</code></td><td>Time when this process was started. For client backends,
this is the time the client connected to the server.
</td></tr><tr><td><code class="structfield">xact_start</code></td><td><code class="type">timestamp with time zone</code></td><td>Time when this process' current transaction was started, or null
if no transaction is active. If the current
query is the first of its transaction, this column is equal to the
<code class="structfield">query_start</code> column.
</td></tr><tr><td><code class="structfield">query_start</code></td><td><code class="type">timestamp with time zone</code></td><td>Time when the currently active query was started, or if
<code class="structfield">state</code> is not <code class="literal">active</code>, when the last query
was started
</td></tr><tr><td><code class="structfield">state_change</code></td><td><code class="type">timestamp with time zone</code></td><td>Time when the <code class="structfield">state</code> was last changed</td></tr><tr><td><code class="structfield">wait_event_type</code></td><td><code class="type">text</code></td><td>The type of event for which the backend is waiting, if any;
otherwise NULL. Possible values are:
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> <code class="literal">LWLock</code>: The backend is waiting for a lightweight lock.
Each such lock protects a particular data structure in shared memory.
<code class="literal">wait_event</code> will contain a name identifying the purpose
of the lightweight lock. (Some locks have specific names; others
are part of a group of locks each with a similar purpose.)
</p></li><li class="listitem"><p> <code class="literal">Lock</code>: The backend is waiting for a heavyweight lock.
Heavyweight locks, also known as lock manager locks or simply locks,
primarily protect SQL-visible objects such as tables. However,
they are also used to ensure mutual exclusion for certain internal
operations such as relation extension. <code class="literal">wait_event</code> will
identify the type of lock awaited.
</p></li><li class="listitem"><p> <code class="literal">BufferPin</code>: The server process is waiting to access to
a data buffer during a period when no other process can be
examining that buffer. Buffer pin waits can be protracted if
another process holds an open cursor which last read data from the
buffer in question.
</p></li><li class="listitem"><p> <code class="literal">Activity</code>: The server process is idle. This is used by
system processes waiting for activity in their main processing loop.
<code class="literal">wait_event</code> will identify the specific wait point.
</p></li><li class="listitem"><p> <code class="literal">Extension</code>: The server process is waiting for activity
in an extension module. This category is useful for modules to
track custom waiting points.
</p></li><li class="listitem"><p> <code class="literal">Client</code>: The server process is waiting for some activity
on a socket from user applications, and that the server expects
something to happen that is independent from its internal processes.
<code class="literal">wait_event</code> will identify the specific wait point.
</p></li><li class="listitem"><p> <code class="literal">IPC</code>: The server process is waiting for some activity
from another process in the server. <code class="literal">wait_event</code> will
identify the specific wait point.
</p></li><li class="listitem"><p> <code class="literal">Timeout</code>: The server process is waiting for a timeout
to expire. <code class="literal">wait_event</code> will identify the specific wait
point.
</p></li><li class="listitem"><p> <code class="literal">IO</code>: The server process is waiting for a IO to complete.
<code class="literal">wait_event</code> will identify the specific wait point.
</p></li></ul></div>
</td></tr><tr><td><code class="structfield">wait_event</code></td><td><code class="type">text</code></td><td>Wait event name if backend is currently waiting, otherwise NULL.
See <a class="xref" href="monitoring-stats.html#WAIT-EVENT-TABLE" title="Table 28.4. wait_event Description">Table 28.4</a> for details.
</td></tr><tr><td><code class="structfield">state</code></td><td><code class="type">text</code></td><td>Current overall state of this backend.
Possible values are:
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> <code class="literal">active</code>: The backend is executing a query.
</p></li><li class="listitem"><p> <code class="literal">idle</code>: The backend is waiting for a new client command.
</p></li><li class="listitem"><p> <code class="literal">idle in transaction</code>: The backend is in a transaction,
but is not currently executing a query.
</p></li><li class="listitem"><p> <code class="literal">idle in transaction (aborted)</code>: This state is similar to
<code class="literal">idle in transaction</code>, except one of the statements in
the transaction caused an error.
</p></li><li class="listitem"><p> <code class="literal">fastpath function call</code>: The backend is executing a
fast-path function.
</p></li><li class="listitem"><p> <code class="literal">disabled</code>: This state is reported if <a class="xref" href="runtime-config-statistics.html#GUC-TRACK-ACTIVITIES">track_activities</a> is disabled in this backend.
</p></li></ul></div>
</td></tr><tr><td><code class="structfield">backend_xid</code></td><td><code class="type">xid</code></td><td>Top-level transaction identifier of this backend, if any.</td></tr><tr><td><code class="structfield">backend_xmin</code></td><td><code class="type">xid</code></td><td>The current backend's <code class="literal">xmin</code> horizon.</td></tr><tr><td><code class="structfield">query</code></td><td><code class="type">text</code></td><td>Text of this backend's most recent query. If
<code class="structfield">state</code> is <code class="literal">active</code> this field shows the
currently executing query. In all other states, it shows the last query
that was executed. By default the query text is truncated at 1024
bytes; this value can be changed via the parameter
<a class="xref" href="runtime-config-statistics.html#GUC-TRACK-ACTIVITY-QUERY-SIZE">track_activity_query_size</a>.
</td></tr><tr><td><code class="structfield">backend_type</code></td><td><code class="type">text</code></td><td>Type of current backend. Possible types are
<code class="literal">autovacuum launcher</code>, <code class="literal">autovacuum worker</code>,
<code class="literal">background worker</code>, <code class="literal">background writer</code>,
<code class="literal">client backend</code>, <code class="literal">checkpointer</code>,
<code class="literal">startup</code>, <code class="literal">walreceiver</code>,
<code class="literal">walsender</code> and <code class="literal">walwriter</code>.
</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_activity</code> view will have one row
per server process, showing information related to
the current activity of that process.
</p><div class="note"><h3 class="title">Note</h3><p> The <code class="structfield">wait_event</code> and <code class="structfield">state</code> columns are
independent. If a backend is in the <code class="literal">active</code> state,
it may or may not be <code class="literal">waiting</code> on some event. If the state
is <code class="literal">active</code> and <code class="structfield">wait_event</code> is non-null, it
means that a query is being executed, but is being blocked somewhere
in the system.
</p></div><div class="table" id="WAIT-EVENT-TABLE"><p class="title"><strong>Table 28.4. <code class="structname">wait_event</code> Description</strong></p><div class="table-contents"><table class="table" summary="wait_event Description" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Wait Event Type</th><th>Wait Event Name</th><th>Description</th></tr></thead><tbody><tr><td rowspan="65"><code class="literal">LWLock</code></td><td><code class="literal">ShmemIndexLock</code></td><td>Waiting to find or allocate space in shared memory.</td></tr><tr><td><code class="literal">OidGenLock</code></td><td>Waiting to allocate or assign an OID.</td></tr><tr><td><code class="literal">XidGenLock</code></td><td>Waiting to allocate or assign a transaction id.</td></tr><tr><td><code class="literal">ProcArrayLock</code></td><td>Waiting to get a snapshot or clearing a transaction id at
transaction end.</td></tr><tr><td><code class="literal">SInvalReadLock</code></td><td>Waiting to retrieve or remove messages from shared invalidation
queue.</td></tr><tr><td><code class="literal">SInvalWriteLock</code></td><td>Waiting to add a message in shared invalidation queue.</td></tr><tr><td><code class="literal">WALBufMappingLock</code></td><td>Waiting to replace a page in WAL buffers.</td></tr><tr><td><code class="literal">WALWriteLock</code></td><td>Waiting for WAL buffers to be written to disk.</td></tr><tr><td><code class="literal">ControlFileLock</code></td><td>Waiting to read or update the control file or creation of a
new WAL file.</td></tr><tr><td><code class="literal">CheckpointLock</code></td><td>Waiting to perform checkpoint.</td></tr><tr><td><code class="literal">CLogControlLock</code></td><td>Waiting to read or update transaction status.</td></tr><tr><td><code class="literal">SubtransControlLock</code></td><td>Waiting to read or update sub-transaction information.</td></tr><tr><td><code class="literal">MultiXactGenLock</code></td><td>Waiting to read or update shared multixact state.</td></tr><tr><td><code class="literal">MultiXactOffsetControlLock</code></td><td>Waiting to read or update multixact offset mappings.</td></tr><tr><td><code class="literal">MultiXactMemberControlLock</code></td><td>Waiting to read or update multixact member mappings.</td></tr><tr><td><code class="literal">RelCacheInitLock</code></td><td>Waiting to read or write relation cache initialization
file.</td></tr><tr><td><code class="literal">CheckpointerCommLock</code></td><td>Waiting to manage fsync requests.</td></tr><tr><td><code class="literal">TwoPhaseStateLock</code></td><td>Waiting to read or update the state of prepared transactions.</td></tr><tr><td><code class="literal">TablespaceCreateLock</code></td><td>Waiting to create or drop the tablespace.</td></tr><tr><td><code class="literal">BtreeVacuumLock</code></td><td>Waiting to read or update vacuum-related information for a
B-tree index.</td></tr><tr><td><code class="literal">AddinShmemInitLock</code></td><td>Waiting to manage space allocation in shared memory.</td></tr><tr><td><code class="literal">AutovacuumLock</code></td><td>Autovacuum worker or launcher waiting to update or
read the current state of autovacuum workers.</td></tr><tr><td><code class="literal">AutovacuumScheduleLock</code></td><td>Waiting to ensure that the table it has selected for a vacuum
still needs vacuuming.
</td></tr><tr><td><code class="literal">SyncScanLock</code></td><td>Waiting to get the start location of a scan on a table for
synchronized scans.</td></tr><tr><td><code class="literal">RelationMappingLock</code></td><td>Waiting to update the relation map file used to store catalog
to filenode mapping.
</td></tr><tr><td><code class="literal">AsyncCtlLock</code></td><td>Waiting to read or update shared notification state.</td></tr><tr><td><code class="literal">AsyncQueueLock</code></td><td>Waiting to read or update notification messages.</td></tr><tr><td><code class="literal">SerializableXactHashLock</code></td><td>Waiting to retrieve or store information about serializable
transactions.</td></tr><tr><td><code class="literal">SerializableFinishedListLock</code></td><td>Waiting to access the list of finished serializable
transactions.</td></tr><tr><td><code class="literal">SerializablePredicateLockListLock</code></td><td>Waiting to perform an operation on a list of locks held by
serializable transactions.</td></tr><tr><td><code class="literal">OldSerXidLock</code></td><td>Waiting to read or record conflicting serializable
transactions.</td></tr><tr><td><code class="literal">SyncRepLock</code></td><td>Waiting to read or update information about synchronous
replicas.</td></tr><tr><td><code class="literal">BackgroundWorkerLock</code></td><td>Waiting to read or update background worker state.</td></tr><tr><td><code class="literal">DynamicSharedMemoryControlLock</code></td><td>Waiting to read or update dynamic shared memory state.</td></tr><tr><td><code class="literal">AutoFileLock</code></td><td>Waiting to update the <code class="filename">postgresql.auto.conf</code> file.</td></tr><tr><td><code class="literal">ReplicationSlotAllocationLock</code></td><td>Waiting to allocate or free a replication slot.</td></tr><tr><td><code class="literal">ReplicationSlotControlLock</code></td><td>Waiting to read or update replication slot state.</td></tr><tr><td><code class="literal">CommitTsControlLock</code></td><td>Waiting to read or update transaction commit timestamps.</td></tr><tr><td><code class="literal">CommitTsLock</code></td><td>Waiting to read or update the last value set for the
transaction timestamp.</td></tr><tr><td><code class="literal">ReplicationOriginLock</code></td><td>Waiting to setup, drop or use replication origin.</td></tr><tr><td><code class="literal">MultiXactTruncationLock</code></td><td>Waiting to read or truncate multixact information.</td></tr><tr><td><code class="literal">OldSnapshotTimeMapLock</code></td><td>Waiting to read or update old snapshot control information.</td></tr><tr><td><code class="literal">BackendRandomLock</code></td><td>Waiting to generate a random number.</td></tr><tr><td><code class="literal">LogicalRepWorkerLock</code></td><td>Waiting for action on logical replication worker to finish.</td></tr><tr><td><code class="literal">CLogTruncationLock</code></td><td>Waiting to execute <code class="function">txid_status</code> or update
the oldest transaction id available to it.</td></tr><tr><td><code class="literal">WrapLimitsVacuumLock</code></td><td>Waiting to update limits on transaction id and multixact
consumption.</td></tr><tr><td><code class="literal">NotifyQueueTailLock</code></td><td>Waiting to update limit on notification message
storage.</td></tr><tr><td><code class="literal">clog</code></td><td>Waiting for I/O on a clog (transaction status) buffer.</td></tr><tr><td><code class="literal">commit_timestamp</code></td><td>Waiting for I/O on commit timestamp buffer.</td></tr><tr><td><code class="literal">subtrans</code></td><td>Waiting for I/O a subtransaction buffer.</td></tr><tr><td><code class="literal">multixact_offset</code></td><td>Waiting for I/O on a multixact offset buffer.</td></tr><tr><td><code class="literal">multixact_member</code></td><td>Waiting for I/O on a multixact_member buffer.</td></tr><tr><td><code class="literal">async</code></td><td>Waiting for I/O on an async (notify) buffer.</td></tr><tr><td><code class="literal">oldserxid</code></td><td>Waiting to I/O on an oldserxid buffer.</td></tr><tr><td><code class="literal">wal_insert</code></td><td>Waiting to insert WAL into a memory buffer.</td></tr><tr><td><code class="literal">buffer_content</code></td><td>Waiting to read or write a data page in memory.</td></tr><tr><td><code class="literal">buffer_io</code></td><td>Waiting for I/O on a data page.</td></tr><tr><td><code class="literal">replication_origin</code></td><td>Waiting to read or update the replication progress.</td></tr><tr><td><code class="literal">replication_slot_io</code></td><td>Waiting for I/O on a replication slot.</td></tr><tr><td><code class="literal">proc</code></td><td>Waiting to read or update the fast-path lock information.</td></tr><tr><td><code class="literal">buffer_mapping</code></td><td>Waiting to associate a data block with a buffer in the buffer
pool.</td></tr><tr><td><code class="literal">lock_manager</code></td><td>Waiting to add or examine locks for backends, or waiting to
join or exit a locking group (used by parallel query).</td></tr><tr><td><code class="literal">predicate_lock_manager</code></td><td>Waiting to add or examine predicate lock information.</td></tr><tr><td><code class="literal">parallel_query_dsa</code></td><td>Waiting for parallel query dynamic shared memory allocation lock.</td></tr><tr><td><code class="literal">tbm</code></td><td>Waiting for TBM shared iterator lock.</td></tr><tr><td rowspan="11"><code class="literal">Lock</code></td><td><code class="literal">relation</code></td><td>Waiting to acquire a lock on a relation.</td></tr><tr><td><code class="literal">extend</code></td><td>Waiting to extend a relation.</td></tr><tr><td><code class="literal">frozenid</code></td><td>Waiting to
update <code class="structname">pg_database</code>.<code class="structfield">datfrozenxid</code>
and <code class="structname">pg_database</code>.<code class="structfield">datminmxid</code>.</td></tr><tr><td><code class="literal">page</code></td><td>Waiting to acquire a lock on page of a relation.</td></tr><tr><td><code class="literal">tuple</code></td><td>Waiting to acquire a lock on a tuple.</td></tr><tr><td><code class="literal">transactionid</code></td><td>Waiting for a transaction to finish.</td></tr><tr><td><code class="literal">virtualxid</code></td><td>Waiting to acquire a virtual xid lock.</td></tr><tr><td><code class="literal">speculative token</code></td><td>Waiting to acquire a speculative insertion lock.</td></tr><tr><td><code class="literal">object</code></td><td>Waiting to acquire a lock on a non-relation database object.</td></tr><tr><td><code class="literal">userlock</code></td><td>Waiting to acquire a user lock.</td></tr><tr><td><code class="literal">advisory</code></td><td>Waiting to acquire an advisory user lock.</td></tr><tr><td><code class="literal">BufferPin</code></td><td><code class="literal">BufferPin</code></td><td>Waiting to acquire a pin on a buffer.</td></tr><tr><td rowspan="14"><code class="literal">Activity</code></td><td><code class="literal">ArchiverMain</code></td><td>Waiting in main loop of the archiver process.</td></tr><tr><td><code class="literal">AutoVacuumMain</code></td><td>Waiting in main loop of autovacuum launcher process.</td></tr><tr><td><code class="literal">BgWriterHibernate</code></td><td>Waiting in background writer process, hibernating.</td></tr><tr><td><code class="literal">BgWriterMain</code></td><td>Waiting in main loop of background writer process background worker.</td></tr><tr><td><code class="literal">CheckpointerMain</code></td><td>Waiting in main loop of checkpointer process.</td></tr><tr><td><code class="literal">LogicalApplyMain</code></td><td>Waiting in main loop of logical apply process.</td></tr><tr><td><code class="literal">LogicalLauncherMain</code></td><td>Waiting in main loop of logical launcher process.</td></tr><tr><td><code class="literal">PgStatMain</code></td><td>Waiting in main loop of the statistics collector process.</td></tr><tr><td><code class="literal">RecoveryWalAll</code></td><td>Waiting for WAL from a stream at recovery.</td></tr><tr><td><code class="literal">RecoveryWalStream</code></td><td> Waiting when WAL data is not available from any kind of sources
(local, archive or stream) before trying again to retrieve WAL data,
at recovery.
</td></tr><tr><td><code class="literal">SysLoggerMain</code></td><td>Waiting in main loop of syslogger process.</td></tr><tr><td><code class="literal">WalReceiverMain</code></td><td>Waiting in main loop of WAL receiver process.</td></tr><tr><td><code class="literal">WalSenderMain</code></td><td>Waiting in main loop of WAL sender process.</td></tr><tr><td><code class="literal">WalWriterMain</code></td><td>Waiting in main loop of WAL writer process.</td></tr><tr><td rowspan="8"><code class="literal">Client</code></td><td><code class="literal">ClientRead</code></td><td>Waiting to read data from the client.</td></tr><tr><td><code class="literal">ClientWrite</code></td><td>Waiting to write data to the client.</td></tr><tr><td><code class="literal">LibPQWalReceiverConnect</code></td><td>Waiting in WAL receiver to establish connection to remote server.</td></tr><tr><td><code class="literal">LibPQWalReceiverReceive</code></td><td>Waiting in WAL receiver to receive data from remote server.</td></tr><tr><td><code class="literal">SSLOpenServer</code></td><td>Waiting for SSL while attempting connection.</td></tr><tr><td><code class="literal">WalReceiverWaitStart</code></td><td>Waiting for startup process to send initial data for streaming replication.</td></tr><tr><td><code class="literal">WalSenderWaitForWAL</code></td><td>Waiting for WAL to be flushed in WAL sender process.</td></tr><tr><td><code class="literal">WalSenderWriteData</code></td><td>Waiting for any activity when processing replies from WAL receiver in WAL sender process.</td></tr><tr><td><code class="literal">Extension</code></td><td><code class="literal">Extension</code></td><td>Waiting in an extension.</td></tr><tr><td rowspan="17"><code class="literal">IPC</code></td><td><code class="literal">BgWorkerShutdown</code></td><td>Waiting for background worker to shut down.</td></tr><tr><td><code class="literal">BgWorkerStartup</code></td><td>Waiting for background worker to start up.</td></tr><tr><td><code class="literal">BtreePage</code></td><td>Waiting for the page number needed to continue a parallel B-tree scan to become available.</td></tr><tr><td><code class="literal">ExecuteGather</code></td><td>Waiting for activity from child process when executing <code class="literal">Gather</code> node.</td></tr><tr><td><code class="literal">LogicalSyncData</code></td><td>Waiting for logical replication remote server to send data for initial table synchronization.</td></tr><tr><td><code class="literal">LogicalSyncStateChange</code></td><td>Waiting for logical replication remote server to change state.</td></tr><tr><td><code class="literal">MessageQueueInternal</code></td><td>Waiting for other process to be attached in shared message queue.</td></tr><tr><td><code class="literal">MessageQueuePutMessage</code></td><td>Waiting to write a protocol message to a shared message queue.</td></tr><tr><td><code class="literal">MessageQueueReceive</code></td><td>Waiting to receive bytes from a shared message queue.</td></tr><tr><td><code class="literal">MessageQueueSend</code></td><td>Waiting to send bytes to a shared message queue.</td></tr><tr><td><code class="literal">ParallelBitmapScan</code></td><td>Waiting for parallel bitmap scan to become initialized.</td></tr><tr><td><code class="literal">ParallelFinish</code></td><td>Waiting for parallel workers to finish computing.</td></tr><tr><td><code class="literal">ProcArrayGroupUpdate</code></td><td>Waiting for group leader to clear transaction id at transaction end.</td></tr><tr><td><code class="literal">ReplicationOriginDrop</code></td><td>Waiting for a replication origin to become inactive to be dropped.</td></tr><tr><td><code class="literal">ReplicationSlotDrop</code></td><td>Waiting for a replication slot to become inactive to be dropped.</td></tr><tr><td><code class="literal">SafeSnapshot</code></td><td>Waiting for a snapshot for a <code class="literal">READ ONLY DEFERRABLE</code> transaction.</td></tr><tr><td><code class="literal">SyncRep</code></td><td>Waiting for confirmation from remote server during synchronous replication.</td></tr><tr><td rowspan="3"><code class="literal">Timeout</code></td><td><code class="literal">BaseBackupThrottle</code></td><td>Waiting during base backup when throttling activity.</td></tr><tr><td><code class="literal">PgSleep</code></td><td>Waiting in process that called <code class="function">pg_sleep</code>.</td></tr><tr><td><code class="literal">RecoveryApplyDelay</code></td><td>Waiting to apply WAL at recovery because it is delayed.</td></tr><tr><td rowspan="67"><code class="literal">IO</code></td><td><code class="literal">BufFileRead</code></td><td>Waiting for a read from a buffered file.</td></tr><tr><td><code class="literal">BufFileWrite</code></td><td>Waiting for a write to a buffered file.</td></tr><tr><td><code class="literal">ControlFileRead</code></td><td>Waiting for a read from the control file.</td></tr><tr><td><code class="literal">ControlFileSync</code></td><td>Waiting for the control file to reach durable storage.</td></tr><tr><td><code class="literal">ControlFileSyncUpdate</code></td><td>Waiting for an update to the control file to reach durable storage.</td></tr><tr><td><code class="literal">ControlFileWrite</code></td><td>Waiting for a write to the control file.</td></tr><tr><td><code class="literal">ControlFileWriteUpdate</code></td><td>Waiting for a write to update the control file.</td></tr><tr><td><code class="literal">CopyFileRead</code></td><td>Waiting for a read during a file copy operation.</td></tr><tr><td><code class="literal">CopyFileWrite</code></td><td>Waiting for a write during a file copy operation.</td></tr><tr><td><code class="literal">DataFileExtend</code></td><td>Waiting for a relation data file to be extended.</td></tr><tr><td><code class="literal">DataFileFlush</code></td><td>Waiting for a relation data file to reach durable storage.</td></tr><tr><td><code class="literal">DataFileImmediateSync</code></td><td>Waiting for an immediate synchronization of a relation data file to durable storage.</td></tr><tr><td><code class="literal">DataFilePrefetch</code></td><td>Waiting for an asynchronous prefetch from a relation data file.</td></tr><tr><td><code class="literal">DataFileRead</code></td><td>Waiting for a read from a relation data file.</td></tr><tr><td><code class="literal">DataFileSync</code></td><td>Waiting for changes to a relation data file to reach durable storage.</td></tr><tr><td><code class="literal">DataFileTruncate</code></td><td>Waiting for a relation data file to be truncated.</td></tr><tr><td><code class="literal">DataFileWrite</code></td><td>Waiting for a write to a relation data file.</td></tr><tr><td><code class="literal">DSMFillZeroWrite</code></td><td>Waiting to write zero bytes to a dynamic shared memory backing file.</td></tr><tr><td><code class="literal">LockFileAddToDataDirRead</code></td><td>Waiting for a read while adding a line to the data directory lock file.</td></tr><tr><td><code class="literal">LockFileAddToDataDirSync</code></td><td>Waiting for data to reach durable storage while adding a line to the data directory lock file.</td></tr><tr><td><code class="literal">LockFileAddToDataDirWrite</code></td><td>Waiting for a write while adding a line to the data directory lock file.</td></tr><tr><td><code class="literal">LockFileCreateRead</code></td><td>Waiting to read while creating the data directory lock file.</td></tr><tr><td><code class="literal">LockFileCreateSync</code></td><td>Waiting for data to reach durable storage while creating the data directory lock file.</td></tr><tr><td><code class="literal">LockFileCreateWrite</code></td><td>Waiting for a write while creating the data directory lock file.</td></tr><tr><td><code class="literal">LockFileReCheckDataDirRead</code></td><td>Waiting for a read during recheck of the data directory lock file.</td></tr><tr><td><code class="literal">LogicalRewriteCheckpointSync</code></td><td>Waiting for logical rewrite mappings to reach durable storage during a checkpoint.</td></tr><tr><td><code class="literal">LogicalRewriteMappingSync</code></td><td>Waiting for mapping data to reach durable storage during a logical rewrite.</td></tr><tr><td><code class="literal">LogicalRewriteMappingWrite</code></td><td>Waiting for a write of mapping data during a logical rewrite.</td></tr><tr><td><code class="literal">LogicalRewriteSync</code></td><td>Waiting for logical rewrite mappings to reach durable storage.</td></tr><tr><td><code class="literal">LogicalRewriteTruncate</code></td><td>Waiting for truncate of mapping data during a logical rewrite.</td></tr><tr><td><code class="literal">LogicalRewriteWrite</code></td><td>Waiting for a write of logical rewrite mappings.</td></tr><tr><td><code class="literal">RelationMapRead</code></td><td>Waiting for a read of the relation map file.</td></tr><tr><td><code class="literal">RelationMapSync</code></td><td>Waiting for the relation map file to reach durable storage.</td></tr><tr><td><code class="literal">RelationMapWrite</code></td><td>Waiting for a write to the relation map file.</td></tr><tr><td><code class="literal">ReorderBufferRead</code></td><td>Waiting for a read during reorder buffer management.</td></tr><tr><td><code class="literal">ReorderBufferWrite</code></td><td>Waiting for a write during reorder buffer management.</td></tr><tr><td><code class="literal">ReorderLogicalMappingRead</code></td><td>Waiting for a read of a logical mapping during reorder buffer management.</td></tr><tr><td><code class="literal">ReplicationSlotRead</code></td><td>Waiting for a read from a replication slot control file.</td></tr><tr><td><code class="literal">ReplicationSlotRestoreSync</code></td><td>Waiting for a replication slot control file to reach durable storage while restoring it to memory.</td></tr><tr><td><code class="literal">ReplicationSlotSync</code></td><td>Waiting for a replication slot control file to reach durable storage.</td></tr><tr><td><code class="literal">ReplicationSlotWrite</code></td><td>Waiting for a write to a replication slot control file.</td></tr><tr><td><code class="literal">SLRUFlushSync</code></td><td>Waiting for SLRU data to reach durable storage during a checkpoint or database shutdown.</td></tr><tr><td><code class="literal">SLRURead</code></td><td>Waiting for a read of an SLRU page.</td></tr><tr><td><code class="literal">SLRUSync</code></td><td>Waiting for SLRU data to reach durable storage following a page write.</td></tr><tr><td><code class="literal">SLRUWrite</code></td><td>Waiting for a write of an SLRU page.</td></tr><tr><td><code class="literal">SnapbuildRead</code></td><td>Waiting for a read of a serialized historical catalog snapshot.</td></tr><tr><td><code class="literal">SnapbuildSync</code></td><td>Waiting for a serialized historical catalog snapshot to reach durable storage.</td></tr><tr><td><code class="literal">SnapbuildWrite</code></td><td>Waiting for a write of a serialized historical catalog snapshot.</td></tr><tr><td><code class="literal">TimelineHistoryFileSync</code></td><td>Waiting for a timeline history file received via streaming replication to reach durable storage.</td></tr><tr><td><code class="literal">TimelineHistoryFileWrite</code></td><td>Waiting for a write of a timeline history file received via streaming replication.</td></tr><tr><td><code class="literal">TimelineHistoryRead</code></td><td>Waiting for a read of a timeline history file.</td></tr><tr><td><code class="literal">TimelineHistorySync</code></td><td>Waiting for a newly created timeline history file to reach durable storage.</td></tr><tr><td><code class="literal">TimelineHistoryWrite</code></td><td>Waiting for a write of a newly created timeline history file.</td></tr><tr><td><code class="literal">TwophaseFileRead</code></td><td>Waiting for a read of a two phase state file.</td></tr><tr><td><code class="literal">TwophaseFileSync</code></td><td>Waiting for a two phase state file to reach durable storage.</td></tr><tr><td><code class="literal">TwophaseFileWrite</code></td><td>Waiting for a write of a two phase state file.</td></tr><tr><td><code class="literal">WALBootstrapSync</code></td><td>Waiting for WAL to reach durable storage during bootstrapping.</td></tr><tr><td><code class="literal">WALBootstrapWrite</code></td><td>Waiting for a write of a WAL page during bootstrapping.</td></tr><tr><td><code class="literal">WALCopyRead</code></td><td>Waiting for a read when creating a new WAL segment by copying an existing one.</td></tr><tr><td><code class="literal">WALCopySync</code></td><td>Waiting a new WAL segment created by copying an existing one to reach durable storage.</td></tr><tr><td><code class="literal">WALCopyWrite</code></td><td>Waiting for a write when creating a new WAL segment by copying an existing one.</td></tr><tr><td><code class="literal">WALInitSync</code></td><td>Waiting for a newly initialized WAL file to reach durable storage.</td></tr><tr><td><code class="literal">WALInitWrite</code></td><td>Waiting for a write while initializing a new WAL file.</td></tr><tr><td><code class="literal">WALRead</code></td><td>Waiting for a read from a WAL file.</td></tr><tr><td><code class="literal">WALSenderTimelineHistoryRead</code></td><td>Waiting for a read from a timeline history file during walsender timeline command.</td></tr><tr><td><code class="literal">WALSyncMethodAssign</code></td><td>Waiting for data to reach durable storage while assigning WAL sync method.</td></tr><tr><td><code class="literal">WALWrite</code></td><td>Waiting for a write to a WAL file.</td></tr></tbody></table></div></div><br class="table-break" /><div class="note"><h3 class="title">Note</h3><p> For tranches registered by extensions, the name is specified by extension
and this will be displayed as <code class="structfield">wait_event</code>. It is quite
possible that user has registered the tranche in one of the backends (by
having allocation in dynamic shared memory) in which case other backends
won't have that information, so we display <code class="literal">extension</code> for such
cases.
</p></div><p> Here is an example of how wait events can be viewed
</p><pre class="programlisting">SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL;
pid | wait_event_type | wait_event
------+-----------------+---------------
2540 | Lock | relation
6644 | LWLock | ProcArrayLock
(2 rows)</pre><p>
</p><div class="table" id="PG-STAT-REPLICATION-VIEW"><p class="title"><strong>Table 28.5. <code class="structname">pg_stat_replication</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_replication View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">pid</code></td><td><code class="type">integer</code></td><td>Process ID of a WAL sender process</td></tr><tr><td><code class="structfield">usesysid</code></td><td><code class="type">oid</code></td><td>OID of the user logged into this WAL sender process</td></tr><tr><td><code class="structfield">usename</code></td><td><code class="type">name</code></td><td>Name of the user logged into this WAL sender process</td></tr><tr><td><code class="structfield">application_name</code></td><td><code class="type">text</code></td><td>Name of the application that is connected
to this WAL sender</td></tr><tr><td><code class="structfield">client_addr</code></td><td><code class="type">inet</code></td><td>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.
</td></tr><tr><td><code class="structfield">client_hostname</code></td><td><code class="type">text</code></td><td>Host name of the connected client, as reported by a
reverse DNS lookup of <code class="structfield">client_addr</code>. This field will
only be non-null for IP connections, and only when <a class="xref" href="runtime-config-logging.html#GUC-LOG-HOSTNAME">log_hostname</a> is enabled.
</td></tr><tr><td><code class="structfield">client_port</code></td><td><code class="type">integer</code></td><td>TCP port number that the client is using for communication
with this WAL sender, or <code class="literal">-1</code> if a Unix socket is used
</td></tr><tr><td><code class="structfield">backend_start</code></td><td><code class="type">timestamp with time zone</code></td><td>Time when this process was started, i.e., when the
client connected to this WAL sender
</td></tr><tr><td><code class="structfield">backend_xmin</code></td><td><code class="type">xid</code></td><td>This standby's <code class="literal">xmin</code> horizon reported
by <a class="xref" href="runtime-config-replication.html#GUC-HOT-STANDBY-FEEDBACK">hot_standby_feedback</a>.</td></tr><tr><td><code class="structfield">state</code></td><td><code class="type">text</code></td><td>Current WAL sender state.
Possible values are:
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> <code class="literal">startup</code>: This WAL sender is starting up.
</p></li><li class="listitem"><p> <code class="literal">catchup</code>: This WAL sender's connected standby is
catching up with the primary.
</p></li><li class="listitem"><p> <code class="literal">streaming</code>: This WAL sender is streaming changes
after its connected standby server has caught up with the primary.
</p></li><li class="listitem"><p> <code class="literal">backup</code>: This WAL sender is sending a backup.
</p></li><li class="listitem"><p> <code class="literal">stopping</code>: This WAL sender is stopping.
</p></li></ul></div>
</td></tr><tr><td><code class="structfield">sent_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location sent on this connection</td></tr><tr><td><code class="structfield">write_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location written to disk by this standby
server</td></tr><tr><td><code class="structfield">flush_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location flushed to disk by this standby
server</td></tr><tr><td><code class="structfield">replay_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location replayed into the database on this
standby server</td></tr><tr><td><code class="structfield">write_lag</code></td><td><code class="type">interval</code></td><td>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
<code class="literal">synchronous_commit</code> level
<code class="literal">remote_write</code> incurred while committing if this
server was configured as a synchronous standby.</td></tr><tr><td><code class="structfield">flush_lag</code></td><td><code class="type">interval</code></td><td>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
<code class="literal">synchronous_commit</code> level
<code class="literal">on</code> incurred while committing if this
server was configured as a synchronous standby.</td></tr><tr><td><code class="structfield">replay_lag</code></td><td><code class="type">interval</code></td><td>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
<code class="literal">synchronous_commit</code> level
<code class="literal">remote_apply</code> incurred while committing if this
server was configured as a synchronous standby.</td></tr><tr><td><code class="structfield">sync_priority</code></td><td><code class="type">integer</code></td><td>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.</td></tr><tr><td><code class="structfield">sync_state</code></td><td><code class="type">text</code></td><td>Synchronous state of this standby server.
Possible values are:
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> <code class="literal">async</code>: This standby server is asynchronous.
</p></li><li class="listitem"><p> <code class="literal">potential</code>: This standby server is now asynchronous,
but can potentially become synchronous if one of current
synchronous ones fails.
</p></li><li class="listitem"><p> <code class="literal">sync</code>: This standby server is synchronous.
</p></li><li class="listitem"><p> <code class="literal">quorum</code>: This standby server is considered as a candidate
for quorum standbys.
</p></li></ul></div>
</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_replication</code> 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.
</p><p> The lag times reported in the <code class="structname">pg_stat_replication</code>
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
<code class="structfield">replay_lag</code> 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.
</p><p> 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.
</p><div class="note"><h3 class="title">Note</h3><p> The reported lag times are not predictions of how long it will take for
the standby to catch up with the sending server assuming the current
rate of replay. Such a system would show similar times while new WAL is
being generated, but would differ when the sender becomes idle. In
particular, when the standby has caught up completely,
<code class="structname">pg_stat_replication</code> shows the time taken to
write, flush and replay the most recent reported WAL location rather than
zero as some users might expect. This is consistent with the goal of
measuring synchronous commit and transaction visibility delays for
recent write transactions.
To reduce confusion for users expecting a different model of lag, the
lag columns revert to NULL after a short time on a fully replayed idle
system. Monitoring systems should choose whether to represent this
as missing data, zero or continue to display the last known value.
</p></div><div class="table" id="PG-STAT-WAL-RECEIVER-VIEW"><p class="title"><strong>Table 28.6. <code class="structname">pg_stat_wal_receiver</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_wal_receiver View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">pid</code></td><td><code class="type">integer</code></td><td>Process ID of the WAL receiver process</td></tr><tr><td><code class="structfield">status</code></td><td><code class="type">text</code></td><td>Activity status of the WAL receiver process</td></tr><tr><td><code class="structfield">receive_start_lsn</code></td><td><code class="type">pg_lsn</code></td><td>First write-ahead log location used when WAL receiver is
started</td></tr><tr><td><code class="structfield">receive_start_tli</code></td><td><code class="type">integer</code></td><td>First timeline number used when WAL receiver is started</td></tr><tr><td><code class="structfield">received_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location already received and flushed to
disk, the initial value of this field being the first log location used
when WAL receiver is started</td></tr><tr><td><code class="structfield">received_tli</code></td><td><code class="type">integer</code></td><td>Timeline number of last write-ahead log location received and
flushed to disk, the initial value of this field being the timeline
number of the first log location used when WAL receiver is started
</td></tr><tr><td><code class="structfield">last_msg_send_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Send time of last message received from origin WAL sender</td></tr><tr><td><code class="structfield">last_msg_receipt_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Receipt time of last message received from origin WAL sender</td></tr><tr><td><code class="structfield">latest_end_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location reported to origin WAL sender</td></tr><tr><td><code class="structfield">latest_end_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Time of last write-ahead log location reported to origin WAL sender</td></tr><tr><td><code class="structfield">slot_name</code></td><td><code class="type">text</code></td><td>Replication slot name used by this WAL receiver</td></tr><tr><td><code class="structfield">conninfo</code></td><td><code class="type">text</code></td><td> Connection string used by this WAL receiver,
with security-sensitive fields obfuscated.
</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_wal_receiver</code> view will contain only
one row, showing statistics about the WAL receiver from that receiver's
connected server.
</p><div class="table" id="PG-STAT-SUBSCRIPTION"><p class="title"><strong>Table 28.7. <code class="structname">pg_stat_subscription</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_subscription View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">subid</code></td><td><code class="type">oid</code></td><td>OID of the subscription</td></tr><tr><td><code class="structfield">subname</code></td><td><code class="type">text</code></td><td>Name of the subscription</td></tr><tr><td><code class="structfield">pid</code></td><td><code class="type">integer</code></td><td>Process ID of the subscription worker process</td></tr><tr><td><code class="structfield">relid</code></td><td><code class="type">Oid</code></td><td>OID of the relation that the worker is synchronizing; null for the
main apply worker</td></tr><tr><td><code class="structfield">received_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location received, the initial value of
this field being 0</td></tr><tr><td><code class="structfield">last_msg_send_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Send time of last message received from origin WAL sender</td></tr><tr><td><code class="structfield">last_msg_receipt_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Receipt time of last message received from origin WAL sender
</td></tr><tr><td><code class="structfield">latest_end_lsn</code></td><td><code class="type">pg_lsn</code></td><td>Last write-ahead log location reported to origin WAL sender
</td></tr><tr><td><code class="structfield">latest_end_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Time of last write-ahead log location reported to origin WAL
sender</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_subscription</code> view will contain one
row per subscription for main worker (with null PID if the worker is
not running), and additional rows for workers handling the initial data
copy of the subscribed tables.
</p><div class="table" id="PG-STAT-SSL-VIEW"><p class="title"><strong>Table 28.8. <code class="structname">pg_stat_ssl</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_ssl View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">pid</code></td><td><code class="type">integer</code></td><td>Process ID of a backend or WAL sender process</td></tr><tr><td><code class="structfield">ssl</code></td><td><code class="type">boolean</code></td><td>True if SSL is used on this connection</td></tr><tr><td><code class="structfield">version</code></td><td><code class="type">text</code></td><td>Version of SSL in use, or NULL if SSL is not in use
on this connection</td></tr><tr><td><code class="structfield">cipher</code></td><td><code class="type">text</code></td><td>Name of SSL cipher in use, or NULL if SSL is not in use
on this connection</td></tr><tr><td><code class="structfield">bits</code></td><td><code class="type">integer</code></td><td>Number of bits in the encryption algorithm used, or NULL
if SSL is not used on this connection</td></tr><tr><td><code class="structfield">compression</code></td><td><code class="type">boolean</code></td><td>True if SSL compression is in use, false if not,
or NULL if SSL is not in use on this connection</td></tr><tr><td><code class="structfield">clientdn</code></td><td><code class="type">text</code></td><td>Distinguished Name (DN) field from the client certificate
used, or NULL if no client certificate was supplied or if SSL
is not in use on this connection. This field is truncated if the
DN field is longer than <code class="symbol">NAMEDATALEN</code> (64 characters
in a standard build)
</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_ssl</code> view will contain one row per
backend or WAL sender process, showing statistics about SSL usage on
this connection. It can be joined to <code class="structname">pg_stat_activity</code>
or <code class="structname">pg_stat_replication</code> on the
<code class="structfield">pid</code> column to get more details about the
connection.
</p><div class="table" id="PG-STAT-ARCHIVER-VIEW"><p class="title"><strong>Table 28.9. <code class="structname">pg_stat_archiver</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_archiver View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">archived_count</code></td><td><code class="type">bigint</code></td><td>Number of WAL files that have been successfully archived</td></tr><tr><td><code class="structfield">last_archived_wal</code></td><td><code class="type">text</code></td><td>Name of the last WAL file successfully archived</td></tr><tr><td><code class="structfield">last_archived_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Time of the last successful archive operation</td></tr><tr><td><code class="structfield">failed_count</code></td><td><code class="type">bigint</code></td><td>Number of failed attempts for archiving WAL files</td></tr><tr><td><code class="structfield">last_failed_wal</code></td><td><code class="type">text</code></td><td>Name of the WAL file of the last failed archival operation</td></tr><tr><td><code class="structfield">last_failed_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Time of the last failed archival operation</td></tr><tr><td><code class="structfield">stats_reset</code></td><td><code class="type">timestamp with time zone</code></td><td>Time at which these statistics were last reset</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_archiver</code> view will always have a
single row, containing data about the archiver process of the cluster.
</p><div class="table" id="PG-STAT-BGWRITER-VIEW"><p class="title"><strong>Table 28.10. <code class="structname">pg_stat_bgwriter</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_bgwriter View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">checkpoints_timed</code></td><td><code class="type">bigint</code></td><td>Number of scheduled checkpoints that have been performed</td></tr><tr><td><code class="structfield">checkpoints_req</code></td><td><code class="type">bigint</code></td><td>Number of requested checkpoints that have been performed</td></tr><tr><td><code class="structfield">checkpoint_write_time</code></td><td><code class="type">double precision</code></td><td> Total amount of time that has been spent in the portion of
checkpoint processing where files are written to disk, in milliseconds
</td></tr><tr><td><code class="structfield">checkpoint_sync_time</code></td><td><code class="type">double precision</code></td><td> Total amount of time that has been spent in the portion of
checkpoint processing where files are synchronized to disk, in
milliseconds
</td></tr><tr><td><code class="structfield">buffers_checkpoint</code></td><td><code class="type">bigint</code></td><td>Number of buffers written during checkpoints</td></tr><tr><td><code class="structfield">buffers_clean</code></td><td><code class="type">bigint</code></td><td>Number of buffers written by the background writer</td></tr><tr><td><code class="structfield">maxwritten_clean</code></td><td><code class="type">bigint</code></td><td>Number of times the background writer stopped a cleaning
scan because it had written too many buffers</td></tr><tr><td><code class="structfield">buffers_backend</code></td><td><code class="type">bigint</code></td><td>Number of buffers written directly by a backend</td></tr><tr><td><code class="structfield">buffers_backend_fsync</code></td><td><code class="type">bigint</code></td><td>Number of times a backend had to execute its own
<code class="function">fsync</code> call (normally the background writer handles those
even when the backend does its own write)</td></tr><tr><td><code class="structfield">buffers_alloc</code></td><td><code class="type">bigint</code></td><td>Number of buffers allocated</td></tr><tr><td><code class="structfield">stats_reset</code></td><td><code class="type">timestamp with time zone</code></td><td>Time at which these statistics were last reset</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_bgwriter</code> view will always have a
single row, containing global data for the cluster.
</p><div class="table" id="PG-STAT-DATABASE-VIEW"><p class="title"><strong>Table 28.11. <code class="structname">pg_stat_database</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_database View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">datid</code></td><td><code class="type">oid</code></td><td>OID of a database</td></tr><tr><td><code class="structfield">datname</code></td><td><code class="type">name</code></td><td>Name of this database</td></tr><tr><td><code class="structfield">numbackends</code></td><td><code class="type">integer</code></td><td>Number of backends currently connected to this database.
This is the only column in this view that returns a value reflecting
current state; all other columns return the accumulated values since
the last reset.</td></tr><tr><td><code class="structfield">xact_commit</code></td><td><code class="type">bigint</code></td><td>Number of transactions in this database that have been
committed</td></tr><tr><td><code class="structfield">xact_rollback</code></td><td><code class="type">bigint</code></td><td>Number of transactions in this database that have been
rolled back</td></tr><tr><td><code class="structfield">blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read in this database</td></tr><tr><td><code class="structfield">blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of times disk blocks were found already in the buffer
cache, so that a read was not necessary (this only includes hits in the
PostgreSQL buffer cache, not the operating system's file system cache)
</td></tr><tr><td><code class="structfield">tup_returned</code></td><td><code class="type">bigint</code></td><td>Number of rows returned by queries in this database</td></tr><tr><td><code class="structfield">tup_fetched</code></td><td><code class="type">bigint</code></td><td>Number of rows fetched by queries in this database</td></tr><tr><td><code class="structfield">tup_inserted</code></td><td><code class="type">bigint</code></td><td>Number of rows inserted by queries in this database</td></tr><tr><td><code class="structfield">tup_updated</code></td><td><code class="type">bigint</code></td><td>Number of rows updated by queries in this database</td></tr><tr><td><code class="structfield">tup_deleted</code></td><td><code class="type">bigint</code></td><td>Number of rows deleted by queries in this database</td></tr><tr><td><code class="structfield">conflicts</code></td><td><code class="type">bigint</code></td><td>Number of queries canceled due to conflicts with recovery
in this database. (Conflicts occur only on standby servers; see
<a class="xref" href="monitoring-stats.html#PG-STAT-DATABASE-CONFLICTS-VIEW" title="Table 28.12. pg_stat_database_conflicts View">pg_stat_database_conflicts</a> for details.)
</td></tr><tr><td><code class="structfield">temp_files</code></td><td><code class="type">bigint</code></td><td>Number of temporary files created by queries in this database.
All temporary files are counted, regardless of why the temporary file
was created (e.g., sorting or hashing), and regardless of the
<a class="xref" href="runtime-config-logging.html#GUC-LOG-TEMP-FILES">log_temp_files</a> setting.
</td></tr><tr><td><code class="structfield">temp_bytes</code></td><td><code class="type">bigint</code></td><td>Total amount of data written to temporary files by queries in
this database. All temporary files are counted, regardless of why
the temporary file was created, and
regardless of the <a class="xref" href="runtime-config-logging.html#GUC-LOG-TEMP-FILES">log_temp_files</a> setting.
</td></tr><tr><td><code class="structfield">deadlocks</code></td><td><code class="type">bigint</code></td><td>Number of deadlocks detected in this database</td></tr><tr><td><code class="structfield">blk_read_time</code></td><td><code class="type">double precision</code></td><td>Time spent reading data file blocks by backends in this database,
in milliseconds</td></tr><tr><td><code class="structfield">blk_write_time</code></td><td><code class="type">double precision</code></td><td>Time spent writing data file blocks by backends in this database,
in milliseconds</td></tr><tr><td><code class="structfield">stats_reset</code></td><td><code class="type">timestamp with time zone</code></td><td>Time at which these statistics were last reset</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_database</code> view will contain one row
for each database in the cluster, showing database-wide statistics.
</p><div class="table" id="PG-STAT-DATABASE-CONFLICTS-VIEW"><p class="title"><strong>Table 28.12. <code class="structname">pg_stat_database_conflicts</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_database_conflicts View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">datid</code></td><td><code class="type">oid</code></td><td>OID of a database</td></tr><tr><td><code class="structfield">datname</code></td><td><code class="type">name</code></td><td>Name of this database</td></tr><tr><td><code class="structfield">confl_tablespace</code></td><td><code class="type">bigint</code></td><td>Number of queries in this database that have been canceled due to
dropped tablespaces</td></tr><tr><td><code class="structfield">confl_lock</code></td><td><code class="type">bigint</code></td><td>Number of queries in this database that have been canceled due to
lock timeouts</td></tr><tr><td><code class="structfield">confl_snapshot</code></td><td><code class="type">bigint</code></td><td>Number of queries in this database that have been canceled due to
old snapshots</td></tr><tr><td><code class="structfield">confl_bufferpin</code></td><td><code class="type">bigint</code></td><td>Number of queries in this database that have been canceled due to
pinned buffers</td></tr><tr><td><code class="structfield">confl_deadlock</code></td><td><code class="type">bigint</code></td><td>Number of queries in this database that have been canceled due to
deadlocks</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_database_conflicts</code> view will contain
one row per database, showing database-wide statistics about
query cancels occurring due to conflicts with recovery on standby servers.
This view will only contain information on standby servers, since
conflicts do not occur on master servers.
</p><div class="table" id="PG-STAT-ALL-TABLES-VIEW"><p class="title"><strong>Table 28.13. <code class="structname">pg_stat_all_tables</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_all_tables View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">relid</code></td><td><code class="type">oid</code></td><td>OID of a table</td></tr><tr><td><code class="structfield">schemaname</code></td><td><code class="type">name</code></td><td>Name of the schema that this table is in</td></tr><tr><td><code class="structfield">relname</code></td><td><code class="type">name</code></td><td>Name of this table</td></tr><tr><td><code class="structfield">seq_scan</code></td><td><code class="type">bigint</code></td><td>Number of sequential scans initiated on this table</td></tr><tr><td><code class="structfield">seq_tup_read</code></td><td><code class="type">bigint</code></td><td>Number of live rows fetched by sequential scans</td></tr><tr><td><code class="structfield">idx_scan</code></td><td><code class="type">bigint</code></td><td>Number of index scans initiated on this table</td></tr><tr><td><code class="structfield">idx_tup_fetch</code></td><td><code class="type">bigint</code></td><td>Number of live rows fetched by index scans</td></tr><tr><td><code class="structfield">n_tup_ins</code></td><td><code class="type">bigint</code></td><td>Number of rows inserted</td></tr><tr><td><code class="structfield">n_tup_upd</code></td><td><code class="type">bigint</code></td><td>Number of rows updated (includes HOT updated rows)</td></tr><tr><td><code class="structfield">n_tup_del</code></td><td><code class="type">bigint</code></td><td>Number of rows deleted</td></tr><tr><td><code class="structfield">n_tup_hot_upd</code></td><td><code class="type">bigint</code></td><td>Number of rows HOT updated (i.e., with no separate index
update required)</td></tr><tr><td><code class="structfield">n_live_tup</code></td><td><code class="type">bigint</code></td><td>Estimated number of live rows</td></tr><tr><td><code class="structfield">n_dead_tup</code></td><td><code class="type">bigint</code></td><td>Estimated number of dead rows</td></tr><tr><td><code class="structfield">n_mod_since_analyze</code></td><td><code class="type">bigint</code></td><td>Estimated number of rows modified since this table was last analyzed</td></tr><tr><td><code class="structfield">last_vacuum</code></td><td><code class="type">timestamp with time zone</code></td><td>Last time at which this table was manually vacuumed
(not counting <code class="command">VACUUM FULL</code>)</td></tr><tr><td><code class="structfield">last_autovacuum</code></td><td><code class="type">timestamp with time zone</code></td><td>Last time at which this table was vacuumed by the autovacuum
daemon</td></tr><tr><td><code class="structfield">last_analyze</code></td><td><code class="type">timestamp with time zone</code></td><td>Last time at which this table was manually analyzed</td></tr><tr><td><code class="structfield">last_autoanalyze</code></td><td><code class="type">timestamp with time zone</code></td><td>Last time at which this table was analyzed by the autovacuum
daemon</td></tr><tr><td><code class="structfield">vacuum_count</code></td><td><code class="type">bigint</code></td><td>Number of times this table has been manually vacuumed
(not counting <code class="command">VACUUM FULL</code>)</td></tr><tr><td><code class="structfield">autovacuum_count</code></td><td><code class="type">bigint</code></td><td>Number of times this table has been vacuumed by the autovacuum
daemon</td></tr><tr><td><code class="structfield">analyze_count</code></td><td><code class="type">bigint</code></td><td>Number of times this table has been manually analyzed</td></tr><tr><td><code class="structfield">autoanalyze_count</code></td><td><code class="type">bigint</code></td><td>Number of times this table has been analyzed by the autovacuum
daemon</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_all_tables</code> view will contain
one row for each table in the current database (including TOAST
tables), showing statistics about accesses to that specific table. The
<code class="structname">pg_stat_user_tables</code> and
<code class="structname">pg_stat_sys_tables</code> views
contain the same information,
but filtered to only show user and system tables respectively.
</p><div class="table" id="PG-STAT-ALL-INDEXES-VIEW"><p class="title"><strong>Table 28.14. <code class="structname">pg_stat_all_indexes</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_all_indexes View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">relid</code></td><td><code class="type">oid</code></td><td>OID of the table for this index</td></tr><tr><td><code class="structfield">indexrelid</code></td><td><code class="type">oid</code></td><td>OID of this index</td></tr><tr><td><code class="structfield">schemaname</code></td><td><code class="type">name</code></td><td>Name of the schema this index is in</td></tr><tr><td><code class="structfield">relname</code></td><td><code class="type">name</code></td><td>Name of the table for this index</td></tr><tr><td><code class="structfield">indexrelname</code></td><td><code class="type">name</code></td><td>Name of this index</td></tr><tr><td><code class="structfield">idx_scan</code></td><td><code class="type">bigint</code></td><td>Number of index scans initiated on this index</td></tr><tr><td><code class="structfield">idx_tup_read</code></td><td><code class="type">bigint</code></td><td>Number of index entries returned by scans on this index</td></tr><tr><td><code class="structfield">idx_tup_fetch</code></td><td><code class="type">bigint</code></td><td>Number of live table rows fetched by simple index scans using this
index</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_all_indexes</code> view will contain
one row for each index in the current database,
showing statistics about accesses to that specific index. The
<code class="structname">pg_stat_user_indexes</code> and
<code class="structname">pg_stat_sys_indexes</code> views
contain the same information,
but filtered to only show user and system indexes respectively.
</p><p> Indexes can be used by simple index scans, <span class="quote">“<span class="quote">bitmap</span>”</span> index scans,
and the optimizer. In a bitmap scan
the output of several indexes can be combined via AND or OR rules,
so it is difficult to associate individual heap row fetches
with specific indexes when a bitmap scan is used. Therefore, a bitmap
scan increments the
<code class="structname">pg_stat_all_indexes</code>.<code class="structfield">idx_tup_read</code>
count(s) for the index(es) it uses, and it increments the
<code class="structname">pg_stat_all_tables</code>.<code class="structfield">idx_tup_fetch</code>
count for the table, but it does not affect
<code class="structname">pg_stat_all_indexes</code>.<code class="structfield">idx_tup_fetch</code>.
The optimizer also accesses indexes to check for supplied constants
whose values are outside the recorded range of the optimizer statistics
because the optimizer statistics might be stale.
</p><div class="note"><h3 class="title">Note</h3><p> The <code class="structfield">idx_tup_read</code> and <code class="structfield">idx_tup_fetch</code> counts
can be different even without any use of bitmap scans,
because <code class="structfield">idx_tup_read</code> counts
index entries retrieved from the index while <code class="structfield">idx_tup_fetch</code>
counts live rows fetched from the table. The latter will be less if any
dead or not-yet-committed rows are fetched using the index, or if any
heap fetches are avoided by means of an index-only scan.
</p></div><div class="table" id="PG-STATIO-ALL-TABLES-VIEW"><p class="title"><strong>Table 28.15. <code class="structname">pg_statio_all_tables</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_statio_all_tables View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">relid</code></td><td><code class="type">oid</code></td><td>OID of a table</td></tr><tr><td><code class="structfield">schemaname</code></td><td><code class="type">name</code></td><td>Name of the schema that this table is in</td></tr><tr><td><code class="structfield">relname</code></td><td><code class="type">name</code></td><td>Name of this table</td></tr><tr><td><code class="structfield">heap_blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read from this table</td></tr><tr><td><code class="structfield">heap_blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of buffer hits in this table</td></tr><tr><td><code class="structfield">idx_blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read from all indexes on this table</td></tr><tr><td><code class="structfield">idx_blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of buffer hits in all indexes on this table</td></tr><tr><td><code class="structfield">toast_blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read from this table's TOAST table (if any)</td></tr><tr><td><code class="structfield">toast_blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of buffer hits in this table's TOAST table (if any)</td></tr><tr><td><code class="structfield">tidx_blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read from this table's TOAST table indexes (if any)</td></tr><tr><td><code class="structfield">tidx_blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of buffer hits in this table's TOAST table indexes (if any)</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_statio_all_tables</code> view will contain
one row for each table in the current database (including TOAST
tables), showing statistics about I/O on that specific table. The
<code class="structname">pg_statio_user_tables</code> and
<code class="structname">pg_statio_sys_tables</code> views
contain the same information,
but filtered to only show user and system tables respectively.
</p><div class="table" id="PG-STATIO-ALL-INDEXES-VIEW"><p class="title"><strong>Table 28.16. <code class="structname">pg_statio_all_indexes</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_statio_all_indexes View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">relid</code></td><td><code class="type">oid</code></td><td>OID of the table for this index</td></tr><tr><td><code class="structfield">indexrelid</code></td><td><code class="type">oid</code></td><td>OID of this index</td></tr><tr><td><code class="structfield">schemaname</code></td><td><code class="type">name</code></td><td>Name of the schema this index is in</td></tr><tr><td><code class="structfield">relname</code></td><td><code class="type">name</code></td><td>Name of the table for this index</td></tr><tr><td><code class="structfield">indexrelname</code></td><td><code class="type">name</code></td><td>Name of this index</td></tr><tr><td><code class="structfield">idx_blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read from this index</td></tr><tr><td><code class="structfield">idx_blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of buffer hits in this index</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_statio_all_indexes</code> view will contain
one row for each index in the current database,
showing statistics about I/O on that specific index. The
<code class="structname">pg_statio_user_indexes</code> and
<code class="structname">pg_statio_sys_indexes</code> views
contain the same information,
but filtered to only show user and system indexes respectively.
</p><div class="table" id="PG-STATIO-ALL-SEQUENCES-VIEW"><p class="title"><strong>Table 28.17. <code class="structname">pg_statio_all_sequences</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_statio_all_sequences View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">relid</code></td><td><code class="type">oid</code></td><td>OID of a sequence</td></tr><tr><td><code class="structfield">schemaname</code></td><td><code class="type">name</code></td><td>Name of the schema this sequence is in</td></tr><tr><td><code class="structfield">relname</code></td><td><code class="type">name</code></td><td>Name of this sequence</td></tr><tr><td><code class="structfield">blks_read</code></td><td><code class="type">bigint</code></td><td>Number of disk blocks read from this sequence</td></tr><tr><td><code class="structfield">blks_hit</code></td><td><code class="type">bigint</code></td><td>Number of buffer hits in this sequence</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_statio_all_sequences</code> view will contain
one row for each sequence in the current database,
showing statistics about I/O on that specific sequence.
</p><div class="table" id="PG-STAT-USER-FUNCTIONS-VIEW"><p class="title"><strong>Table 28.18. <code class="structname">pg_stat_user_functions</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_user_functions View" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Column</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="structfield">funcid</code></td><td><code class="type">oid</code></td><td>OID of a function</td></tr><tr><td><code class="structfield">schemaname</code></td><td><code class="type">name</code></td><td>Name of the schema this function is in</td></tr><tr><td><code class="structfield">funcname</code></td><td><code class="type">name</code></td><td>Name of this function</td></tr><tr><td><code class="structfield">calls</code></td><td><code class="type">bigint</code></td><td>Number of times this function has been called</td></tr><tr><td><code class="structfield">total_time</code></td><td><code class="type">double precision</code></td><td>Total time spent in this function and all other functions
called by it, in milliseconds</td></tr><tr><td><code class="structfield">self_time</code></td><td><code class="type">double precision</code></td><td>Total time spent in this function itself, not including
other functions called by it, in milliseconds</td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="structname">pg_stat_user_functions</code> view will contain
one row for each tracked function, showing statistics about executions of
that function. The <a class="xref" href="runtime-config-statistics.html#GUC-TRACK-FUNCTIONS">track_functions</a> parameter
controls exactly which functions are tracked.
</p></div><div class="sect2" id="MONITORING-STATS-FUNCTIONS"><div class="titlepage"><div><div><h3 class="title">28.2.3. Statistics Functions</h3></div></div></div><p> Other ways of looking at the statistics can be set up by writing
queries that use the same underlying statistics access functions used by
the standard views shown above. For details such as the functions' names,
consult the definitions of the standard views. (For example, in
<span class="application">psql</span> you could issue <code class="literal">\d+ pg_stat_activity</code>.)
The access functions for per-database statistics take a database OID as an
argument to identify which database to report on.
The per-table and per-index functions take a table or index OID.
The functions for per-function statistics take a function OID.
Note that only tables, indexes, and functions in the current database
can be seen with these functions.
</p><p> Additional functions related to statistics collection are listed in <a class="xref" href="monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE" title="Table 28.19. Additional Statistics Functions">Table 28.19</a>.
</p><div class="table" id="MONITORING-STATS-FUNCS-TABLE"><p class="title"><strong>Table 28.19. Additional Statistics Functions</strong></p><div class="table-contents"><table class="table" summary="Additional Statistics Functions" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Function</th><th>Return Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal"><code class="function">pg_backend_pid()</code></code></td><td><code class="type">integer</code></td><td> Process ID of the server process handling the current session
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_activity</code>(<code class="type">integer</code>)</code><a id="id-1.6.15.7.7.4.2.2.2.1.2" class="indexterm"></a></td><td><code class="type">setof record</code></td><td> Returns a record of information about the backend with the specified PID, or
one record for each active backend in the system if <code class="symbol">NULL</code> is
specified. The fields returned are a subset of those in the
<code class="structname">pg_stat_activity</code> view.
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_snapshot_timestamp()</code></code><a id="id-1.6.15.7.7.4.2.2.3.1.2" class="indexterm"></a></td><td><code class="type">timestamp with time zone</code></td><td> Returns the timestamp of the current statistics snapshot
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_clear_snapshot()</code></code><a id="id-1.6.15.7.7.4.2.2.4.1.2" class="indexterm"></a></td><td><code class="type">void</code></td><td> Discard the current statistics snapshot
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_reset()</code></code><a id="id-1.6.15.7.7.4.2.2.5.1.2" class="indexterm"></a></td><td><code class="type">void</code></td><td> Reset all statistics counters for the current database to zero
(requires superuser privileges by default, but EXECUTE for this
function can be granted to others.)
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_reset_shared</code>(text)</code><a id="id-1.6.15.7.7.4.2.2.6.1.2" class="indexterm"></a></td><td><code class="type">void</code></td><td> Reset some cluster-wide statistics counters to zero, depending on the
argument (requires superuser privileges by default, but EXECUTE for
this function can be granted to others).
Calling <code class="literal">pg_stat_reset_shared('bgwriter')</code> will zero all the
counters shown in the <code class="structname">pg_stat_bgwriter</code> view.
Calling <code class="literal">pg_stat_reset_shared('archiver')</code> will zero all the
counters shown in the <code class="structname">pg_stat_archiver</code> view.
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_reset_single_table_counters</code>(oid)</code><a id="id-1.6.15.7.7.4.2.2.7.1.2" class="indexterm"></a></td><td><code class="type">void</code></td><td> Reset statistics for a single table or index in the current database to
zero (requires superuser privileges by default, but EXECUTE for this
function can be granted to others)
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_reset_single_function_counters</code>(oid)</code><a id="id-1.6.15.7.7.4.2.2.8.1.2" class="indexterm"></a></td><td><code class="type">void</code></td><td> Reset statistics for a single function in the current database to
zero (requires superuser privileges by default, but EXECUTE for this
function can be granted to others)
</td></tr></tbody></table></div></div><br class="table-break" /><div class="warning"><h3 class="title">Warning</h3><p> Using <code class="function">pg_stat_reset()</code> also resets counters that
autovacuum uses to determine when to trigger a vacuum or an analyze.
Resetting these counters can cause autovacuum to not perform necessary
work, which can cause problems such as table bloat or out-dated
table statistics. A database-wide <code class="command">ANALYZE</code> is
recommended after the statistics have been reset.
</p></div><p> <code class="function">pg_stat_get_activity</code>, the underlying function of
the <code class="structname">pg_stat_activity</code> view, returns a set of records
containing all the available information about each backend process.
Sometimes it may be more convenient to obtain just a subset of this
information. In such cases, an older set of per-backend statistics
access functions can be used; these are shown in <a class="xref" href="monitoring-stats.html#MONITORING-STATS-BACKEND-FUNCS-TABLE" title="Table 28.20. Per-Backend Statistics Functions">Table 28.20</a>.
These access functions use a backend ID number, which ranges from one
to the number of currently active backends.
The function <code class="function">pg_stat_get_backend_idset</code> provides a
convenient way to generate one row for each active backend for
invoking these functions. For example, to show the <acronym class="acronym">PID</acronym>s and
current queries of all backends:
</p><pre class="programlisting">SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
pg_stat_get_backend_activity(s.backendid) AS query
FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;</pre><p>
</p><div class="table" id="MONITORING-STATS-BACKEND-FUNCS-TABLE"><p class="title"><strong>Table 28.20. Per-Backend Statistics Functions</strong></p><div class="table-contents"><table class="table" summary="Per-Backend Statistics Functions" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Function</th><th>Return Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal"><code class="function">pg_stat_get_backend_idset()</code></code></td><td><code class="type">setof integer</code></td><td>Set of currently active backend ID numbers (from 1 to the
number of active backends)</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_activity(integer)</code></code></td><td><code class="type">text</code></td><td>Text of this backend's most recent query</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_activity_start(integer)</code></code></td><td><code class="type">timestamp with time zone</code></td><td>Time when the most recent query was started</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_client_addr(integer)</code></code></td><td><code class="type">inet</code></td><td>IP address of the client connected to this backend</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_client_port(integer)</code></code></td><td><code class="type">integer</code></td><td>TCP port number that the client is using for communication</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_dbid(integer)</code></code></td><td><code class="type">oid</code></td><td>OID of the database this backend is connected to</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_pid(integer)</code></code></td><td><code class="type">integer</code></td><td>Process ID of this backend</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_start(integer)</code></code></td><td><code class="type">timestamp with time zone</code></td><td>Time when this process was started</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_userid(integer)</code></code></td><td><code class="type">oid</code></td><td>OID of the user logged into this backend</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_wait_event_type(integer)</code></code></td><td><code class="type">text</code></td><td>Wait event type name if backend is currently waiting, otherwise NULL.
See <a class="xref" href="monitoring-stats.html#WAIT-EVENT-TABLE" title="Table 28.4. wait_event Description">Table 28.4</a> for details.
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_wait_event(integer)</code></code></td><td><code class="type">text</code></td><td>Wait event name if backend is currently waiting, otherwise NULL.
See <a class="xref" href="monitoring-stats.html#WAIT-EVENT-TABLE" title="Table 28.4. wait_event Description">Table 28.4</a> for details.
</td></tr><tr><td><code class="literal"><code class="function">pg_stat_get_backend_xact_start(integer)</code></code></td><td><code class="type">timestamp with time zone</code></td><td>Time when the current transaction was started</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="monitoring-ps.html" title="28.1. Standard Unix Tools">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="monitoring.html" title="Chapter 28. Monitoring Database Activity">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="monitoring-locks.html" title="28.3. Viewing Locks">Next</a></td></tr><tr><td width="40%" align="left" valign="top">28.1. Standard Unix Tools </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.23 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 28.3. Viewing Locks</td></tr></table></div></body></html>