|
- <?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>27.2. The Statistics Collector</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="monitoring-ps.html" title="27.1. Standard Unix Tools" /><link rel="next" href="monitoring-locks.html" title="27.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">27.2. The Statistics Collector</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="monitoring-ps.html" title="27.1. Standard Unix Tools">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="monitoring.html" title="Chapter 27. Monitoring Database Activity">Up</a></td><th width="60%" align="center">Chapter 27. Monitoring Database Activity</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="monitoring-locks.html" title="27.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">27.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">27.2.1. Statistics Collection Configuration</a></span></dt><dt><span class="sect2"><a href="monitoring-stats.html#MONITORING-STATS-VIEWS">27.2.2. Viewing Statistics</a></span></dt><dt><span class="sect2"><a href="monitoring-stats.html#MONITORING-STATS-FUNCTIONS">27.2.3. Statistics Functions</a></span></dt></dl></div><a id="id-1.6.14.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">27.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">27.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 27.1. Dynamic Statistics Views">Table 27.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 27.2. Collected Statistics Views">Table 27.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="27.2.3. Statistics Functions">Section 27.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><p>
- Some of the information in the dynamic statistics views shown in <a class="xref" href="monitoring-stats.html#MONITORING-STATS-DYNAMIC-VIEWS-TABLE" title="Table 27.1. Dynamic Statistics Views">Table 27.1</a> is security restricted.
- Ordinary users can only see all the information about their own sessions
- (sessions belonging to a role that they are a member of). In rows about
- other sessions, many columns will be null. Note, however, that the
- existence of a session and its general properties such as its sessions user
- and database are visible to all users. Superusers and members of the
- built-in role <code class="literal">pg_read_all_stats</code> (see also <a class="xref" href="default-roles.html" title="21.5. Default Roles">Section 21.5</a>) can see all the information about all sessions.
- </p><div class="table" id="MONITORING-STATS-DYNAMIC-VIEWS-TABLE"><p class="title"><strong>Table 27.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.14.7.6.7.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 27.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.14.7.6.7.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 27.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.14.7.6.7.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 27.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.14.7.6.7.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 27.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.14.7.6.7.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 27.8. pg_stat_ssl View">pg_stat_ssl</a> for details.
- </td></tr><tr><td><code class="structname">pg_stat_gssapi</code><a id="id-1.6.14.7.6.7.2.2.6.1.2" class="indexterm"></a></td><td>One row per connection (regular and replication), showing information about
- GSSAPI authentication and encryption used on this connection.
- See <a class="xref" href="monitoring-stats.html#PG-STAT-GSSAPI-VIEW" title="Table 27.9. pg_stat_gssapi View">pg_stat_gssapi</a> for details.
- </td></tr><tr><td><code class="structname">pg_stat_progress_create_index</code><a id="id-1.6.14.7.6.7.2.2.7.1.2" class="indexterm"></a></td><td>One row for each backend running <code class="command">CREATE INDEX</code> or <code class="command">REINDEX</code>, showing
- current progress.
- See <a class="xref" href="progress-reporting.html#CREATE-INDEX-PROGRESS-REPORTING" title="27.4.1. CREATE INDEX Progress Reporting">Section 27.4.1</a>.
- </td></tr><tr><td><code class="structname">pg_stat_progress_vacuum</code><a id="id-1.6.14.7.6.7.2.2.8.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="27.4.2. VACUUM Progress Reporting">Section 27.4.2</a>.
- </td></tr><tr><td><code class="structname">pg_stat_progress_cluster</code><a id="id-1.6.14.7.6.7.2.2.9.1.2" class="indexterm"></a></td><td>One row for each backend running
- <code class="command">CLUSTER</code> or <code class="command">VACUUM FULL</code>, showing current progress.
- See <a class="xref" href="progress-reporting.html#CLUSTER-PROGRESS-REPORTING" title="27.4.3. CLUSTER Progress Reporting">Section 27.4.3</a>.
- </td></tr></tbody></table></div></div><br class="table-break" /><div class="table" id="MONITORING-STATS-VIEWS-TABLE"><p class="title"><strong>Table 27.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.14.7.6.8.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 27.10. 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.14.7.6.8.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 27.11. 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.14.7.6.8.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 27.12. 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.14.7.6.8.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 27.13. 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.14.7.6.8.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 27.14. 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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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 27.15. 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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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 27.16. 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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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 27.17. 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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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 27.18. 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.14.7.6.8.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.14.7.6.8.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.14.7.6.8.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 27.19. 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.14.7.6.8.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 27.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 27.4. wait_event Description">Table 27.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">logical replication launcher</code>,
- <code class="literal">logical replication worker</code>,
- <code class="literal">parallel 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>.
- In addition, background workers registered by extensions may have
- additional types.
- </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 27.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">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">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 for 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">serializable_xact</code></td><td>Waiting to perform an operation on a serializable transaction
- in a parallel query.</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><code class="literal">parallel_append</code></td><td>Waiting to choose the next subplan during Parallel Append plan
- execution.</td></tr><tr><td><code class="literal">parallel_hash_join</code></td><td>Waiting to allocate or exchange a chunk of memory or update
- counters during Parallel Hash plan execution.</td></tr><tr><td rowspan="10"><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">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="9"><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">GSSOpenServer</code></td><td>Waiting to read data from the client while establishing the GSSAPI session.</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="37"><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">CheckpointDone</code></td><td>Waiting for a checkpoint to complete.</td></tr><tr><td><code class="literal">CheckpointStart</code></td><td>Waiting for a checkpoint to start.</td></tr><tr><td><code class="literal">ClogGroupUpdate</code></td><td>Waiting for group leader to update transaction status at transaction end.</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">Hash/Batch/Allocating</code></td><td>Waiting for an elected Parallel Hash participant to allocate a hash table.</td></tr><tr><td><code class="literal">Hash/Batch/Electing</code></td><td>Electing a Parallel Hash participant to allocate a hash table.</td></tr><tr><td><code class="literal">Hash/Batch/Loading</code></td><td>Waiting for other Parallel Hash participants to finish loading a hash table.</td></tr><tr><td><code class="literal">Hash/Build/Allocating</code></td><td>Waiting for an elected Parallel Hash participant to allocate the initial hash table.</td></tr><tr><td><code class="literal">Hash/Build/Electing</code></td><td>Electing a Parallel Hash participant to allocate the initial hash table.</td></tr><tr><td><code class="literal">Hash/Build/HashingInner</code></td><td>Waiting for other Parallel Hash participants to finish hashing the inner relation.</td></tr><tr><td><code class="literal">Hash/Build/HashingOuter</code></td><td>Waiting for other Parallel Hash participants to finish partitioning the outer relation.</td></tr><tr><td><code class="literal">Hash/GrowBatches/Allocating</code></td><td>Waiting for an elected Parallel Hash participant to allocate more batches.</td></tr><tr><td><code class="literal">Hash/GrowBatches/Deciding</code></td><td>Electing a Parallel Hash participant to decide on future batch growth.</td></tr><tr><td><code class="literal">Hash/GrowBatches/Electing</code></td><td>Electing a Parallel Hash participant to allocate more batches.</td></tr><tr><td><code class="literal">Hash/GrowBatches/Finishing</code></td><td>Waiting for an elected Parallel Hash participant to decide on future batch growth.</td></tr><tr><td><code class="literal">Hash/GrowBatches/Repartitioning</code></td><td>Waiting for other Parallel Hash participants to finishing repartitioning.</td></tr><tr><td><code class="literal">Hash/GrowBuckets/Allocating</code></td><td>Waiting for an elected Parallel Hash participant to finish allocating more buckets.</td></tr><tr><td><code class="literal">Hash/GrowBuckets/Electing</code></td><td>Electing a Parallel Hash participant to allocate more buckets.</td></tr><tr><td><code class="literal">Hash/GrowBuckets/Reinserting</code></td><td>Waiting for other Parallel Hash participants to finish inserting tuples into new buckets.</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">ParallelCreateIndexScan</code></td><td>Waiting for parallel <code class="command">CREATE INDEX</code> workers to finish heap scan.</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">Promote</code></td><td>Waiting for standby promotion.</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="68"><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 stable storage.</td></tr><tr><td><code class="literal">ControlFileSyncUpdate</code></td><td>Waiting for an update to the control file to reach stable 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 stable storage.</td></tr><tr><td><code class="literal">DataFileImmediateSync</code></td><td>Waiting for an immediate synchronization of a relation data file to stable 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 stable 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 stable 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 stable 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 stable storage during a checkpoint.</td></tr><tr><td><code class="literal">LogicalRewriteMappingSync</code></td><td>Waiting for mapping data to reach stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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 stable 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">WALSync</code></td><td>Waiting for a WAL file to reach stable storage.</td></tr><tr><td><code class="literal">WALSyncMethodAssign</code></td><td>Waiting for data to reach stable 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 27.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><tr><td><code class="structfield">reply_time</code></td><td><code class="type">timestamp with time zone</code></td><td>Send time of last reply message received from standby server</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 27.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">sender_host</code></td><td><code class="type">text</code></td><td>
- Host of the <span class="productname">PostgreSQL</span> instance
- this WAL receiver is connected to. This can be a host name,
- an IP address, or a directory path if the connection is via
- Unix socket. (The path case can be distinguished because it
- will always be an absolute path, beginning with <code class="literal">/</code>.)
- </td></tr><tr><td><code class="structfield">sender_port</code></td><td><code class="type">integer</code></td><td>
- Port number of the <span class="productname">PostgreSQL</span> instance
- this WAL receiver is connected to.
- </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 27.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 27.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">client_dn</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><tr><td><code class="structfield">client_serial</code></td><td><code class="type">numeric</code></td><td>Serial number of the client certificate, or NULL if no client
- certificate was supplied or if SSL is not in use on this connection. The
- combination of certificate serial number and certificate issuer uniquely
- identifies a certificate (unless the issuer erroneously reuses serial
- numbers).</td></tr><tr><td><code class="structfield">issuer_dn</code></td><td><code class="type">text</code></td><td>DN of the issuer of the client certificate, or NULL if no client
- certificate was supplied or if SSL is not in use on this connection.
- This field is truncated like <code class="structfield">client_dn</code>.</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-GSSAPI-VIEW"><p class="title"><strong>Table 27.9. <code class="structname">pg_stat_gssapi</code> View</strong></p><div class="table-contents"><table class="table" summary="pg_stat_gssapi 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</td></tr><tr><td><code class="structfield">gss_authenticated</code></td><td><code class="type">boolean</code></td><td>True if GSSAPI authentication was used for this connection</td></tr><tr><td><code class="structfield">principal</code></td><td><code class="type">text</code></td><td>Principal used to authenticate this connection, or NULL
- if GSSAPI was not used to authenticate this connection. This
- field is truncated if the principal is longer than
- <code class="symbol">NAMEDATALEN</code> (64 characters in a standard build).
- </td></tr><tr><td><code class="structfield">encrypted</code></td><td><code class="type">boolean</code></td><td>True if GSSAPI encryption is in use on this connection</td></tr></tbody></table></div></div><br class="table-break" /><p>
- The <code class="structname">pg_stat_gssapi</code> view will contain one row per
- backend, showing information about GSSAPI 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 27.10. <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 27.11. <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 27.12. <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 this database, or 0 for objects belonging to a shared
- relation</td></tr><tr><td><code class="structfield">datname</code></td><td><code class="type">name</code></td><td>Name of this database, or <code class="literal">NULL</code> for the shared
- objects.</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, or
- <code class="literal">NULL</code> for the shared objects. 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 27.13. 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">checksum_failures</code></td><td><code class="type">bigint</code></td><td>Number of data page checksum failures detected in this
- database (or on a shared object), or NULL if data checksums are not
- enabled.</td></tr><tr><td><code class="structfield">checksum_last_failure</code></td><td><code class="type">timestamp with time zone</code></td><td>Time at which the last data page checksum failure was detected in
- this database (or on a shared object), or NULL if data checksums are not
- enabled.</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, plus one for the shared objects, showing
- database-wide statistics.
- </p><div class="table" id="PG-STAT-DATABASE-CONFLICTS-VIEW"><p class="title"><strong>Table 27.13. <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 27.14. <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 27.15. <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 27.16. <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 27.17. <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 27.18. <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 27.19. <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">27.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 27.20. Additional Statistics Functions">Table 27.20</a>.
- </p><div class="table" id="MONITORING-STATS-FUNCS-TABLE"><p class="title"><strong>Table 27.20. 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.14.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.14.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.14.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.14.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.14.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.14.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.14.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" /><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 27.21. Per-Backend Statistics Functions">Table 27.21</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 27.21. 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 27.4. wait_event Description">Table 27.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 27.4. wait_event Description">Table 27.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 class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="monitoring-ps.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="monitoring.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="monitoring-locks.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">27.1. Standard Unix Tools </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 27.3. Viewing Locks</td></tr></table></div></body></html>
|