## 20.9. Run-time Statistics

[20.9.1. Query and Index Statistics Collector](runtime-config-statistics.html#RUNTIME-CONFIG-STATISTICS-COLLECTOR)

[20.9.2. Statistics Monitoring](runtime-config-statistics.html#RUNTIME-CONFIG-STATISTICS-MONITOR)

### 20.9.1. Query and Index Statistics Collector

 These parameters control server-wide statistics collection features. When statistics collection is enabled, the data that is produced can be accessed via the `pg_stat` and `pg_statio` family of system views. Refer to [Chapter 28](monitoring.html) for more information.

`track_activities` (`boolean`) []()

 Enables the collection of information on the currently executing command of each session, along with its identifier and the time when that command began execution. This parameter is on by default. Note that even when enabled, this information is not visible to all users, only to superusers and the user owning the session being reported on, so it should not represent a security risk. Only superusers can change this setting.

`track_activity_query_size` (`integer`) []()

 Specifies the amount of memory reserved to store the text of the currently executing command for each active session, for the `pg_stat_activity`.`query` field. If this value is specified without units, it is taken as bytes. The default value is 1024 bytes. This parameter can only be set at server start.

`track_counts` (`boolean`) []()

 Enables collection of statistics on database activity. This parameter is on by default, because the autovacuum daemon needs the collected information. Only superusers can change this setting.

`track_io_timing` (`boolean`) []()

 Enables timing of database I/O calls. This parameter is off by default, as it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. You can use the [pg\_test\_timing](pgtesttiming.html) tool to measure the overhead of timing on your system. I/O timing information is displayed in [`pg_stat_database`](monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW), in the output of [EXPLAIN](sql-explain.html) when the `BUFFERS` option is used, by autovacuum for auto-vacuums and auto-analyzes, when [log\_autovacuum\_min\_duration](runtime-config-logging.html#GUC-LOG-AUTOVACUUM-MIN-DURATION) is set and by [pg\_stat\_statements](pgstatstatements.html). Only superusers can change this setting.

`track_wal_io_timing` (`boolean`) []()

 Enables timing of WAL I/O calls. This parameter is off by default, as it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. You can use the pg\_test\_timing tool to measure the overhead of timing on your system. I/O timing information is displayed in [`pg_stat_wal`](monitoring-stats.html#MONITORING-PG-STAT-WAL-VIEW). Only superusers can change this setting.

`track_functions` (`enum`) []()

 Enables tracking of function call counts and time used. Specify `pl` to track only procedural-language functions, `all` to also track SQL and C language functions. The default is `none`, which disables function statistics tracking. Only superusers can change this setting.

### Note

 SQL-language functions that are simple enough to be “inlined” into the calling query will not be tracked, regardless of this setting.

`stats_temp_directory` (`string`) []()

 Sets the directory to store temporary statistics data in. This can be a path relative to the data directory or an absolute path. The default is `pg_stat_tmp`. Pointing this at a RAM-based file system will decrease physical I/O requirements and can lead to improved performance. This parameter can only be set in the `postgresql.conf` file or on the server command line.

### 20.9.2. Statistics Monitoring

`compute_query_id` (`enum`) []()

 Enables in-core computation of a query identifier. Query identifiers can be displayed in the [`pg_stat_activity`](monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW) view, using `EXPLAIN`, or emitted in the log if configured via the [log\_line\_prefix](runtime-config-logging.html#GUC-LOG-LINE-PREFIX) parameter. The [pg\_stat\_statements](pgstatstatements.html) extension also requires a query identifier to be computed. Note that an external module can alternatively be used if the in-core query identifier computation method is not acceptable. In this case, in-core computation must be always disabled. Valid values are `off` (always disabled), `on` (always enabled) and `auto`, which lets modules such as [pg\_stat\_statements](pgstatstatements.html) automatically enable it. The default is `auto`.

### Note

 To ensure that only one query identifier is calculated and displayed, extensions that calculate query identifiers should throw an error if a query identifier has already been computed.

`log_statement_stats` (`boolean`) []()   
`log_parser_stats` (`boolean`) []()   
`log_planner_stats` (`boolean`) []()   
`log_executor_stats` (`boolean`) []()

 For each query, output performance statistics of the respective module to the server log. This is a crude profiling instrument, similar to the Unix `getrusage()` operating system facility. `log_statement_stats` reports total statement statistics, while the others report per-module statistics. `log_statement_stats` cannot be enabled together with any of the per-module options. All of these options are disabled by default. Only superusers can change these settings.

