Updated on 2023-10-23 GMT+08:00

Automatic Vacuuming

The autovacuum process automatically runs the VACUUM and ANALYZE statements to recycle the record space marked as deleted and update statistics about the table.

autovacuum

Parameter description: Specifies whether to start the autovacuum process in the database. Ensure that the track_counts parameter is set to on before starting the autovacuum process.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

  • Set the autovacuum parameter to on if you want to start the automatic cleanup of abnormal two-phase transactions when the system recovers from faults.
  • If autovacuum is set to on and autovacuum_max_workers to 0, the autovacuum process is started only when the system recovers from faults to clean up abnormal two-phase transactions.
  • If autovacuum is set to on and autovacuum_max_workers to a value greater than 0, the autovacuum process is started to clean up two-phase transactions and processes when the system recovers from faults.

Even if autovacuum is set to off, the autovacuum process will be started automatically when a transaction ID wraparound is about to occur. When a CREATE DATABASE or DROP DATABASE operation fails, it is possible that the transaction has been committed or rolled back on some nodes whereas some nodes are still in the prepared state. In this case, perform the following operations to manually restore the nodes:

  1. Use the gs_clean tool (setting the option parameter to -N) to query the xid of the abnormal two-phase transaction and nodes in the prepared status.
  2. Log in to the nodes in the prepared state. Administrators connect to an available database such as postgres and run the set xc_maintenance_mode = on statement.
  3. Commit or roll back the two-phase transaction based on the global transaction status.

Value range: Boolean

  • on indicates that the autovacuum process is started.
  • off indicates that the autovacuum process is not started.

Default value: on

autovacuum_mode

Parameter description: Specifies whether the autoanalyze or autovacuum function is started. This parameter is valid only when autovacuum is set to on.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: enumerated values

  • analyze indicates that only autoanalyze is performed.
  • vacuum indicates that only autovacuum is performed.
  • mix indicates that both autoanalyze and autovacuum are performed.
  • none indicates that neither of them is performed.

Default value: mix

autoanalyze_timeout

Parameter description: Specifies the timeout period of autoanalyze. If the duration of autoanalyze on a table exceeds the value of autoanalyze_timeout, the autoanalyze is automatically canceled.

The timeout check cannot be completely accurate. In principle, the statistics on each CN must be consistent. Therefore, the synchronization between CNs will not be interrupted even if the synchronization times out. As a result, the actual execution time may exceed the user-defined time.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 0 to 2147483, in seconds. The value 0 indicates no timeout.

Default value: 5min (300s)

autovacuum_io_limits

Parameter description: Specifies the upper limit of I/Os triggered by the autovacuum process per second.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from –1 to 1073741823. –1 indicates that the default cgroup is used.

Default value: –1

log_autovacuum_min_duration

Parameter description: Records each step performed by the autovacuum process to the server log when the execution time of the autovacuum process is greater than or equal to a certain value. This parameter helps track the autovacuum behavior.

For example, set the log_autovacuum_min_duration parameter to 250ms to record the information about the autovacuum commands running longer than or equal to 250 ms.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from –1 to 2147483647. The unit is ms.

  • 0 indicates that all autovacuum actions are recorded in the log.
  • –1 indicates that all autovacuum actions are not recorded in the log.
  • A value other than –1 indicates that a message is recorded when an autovacuum action is skipped due to a lock conflict.

Default value: –1

autovacuum_max_workers

Parameter description: Specifies the maximum number of autovacuum worker threads that can run at the same time. The upper limit of this parameter is related to the values of max_connections and job_queue_processes.

This parameter is a POSTMASTER parameter. Set it based on instructions provided in Table 2.

Value range: an integer. The minimum value is 0, indicating that autovacuum is not enabled. The theoretical maximum value is 262143, but the actual maximum value is a dynamic value calculated by the following formula: 262143 – Value of max_inner_tool_connections – Value of max_connections – Value of job_queue_processes – Number of auxiliary threads – Number of autovacuum launcher threads – 1. The number of auxiliary threads and the number of autovacuum launcher threads are specified by two macros. Their default values are 20 and 2 respectively.

Default value: 3

autovacuum_naptime

Parameter description: Specifies the interval between activity rounds for the autovacuum process.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 1 to 2147483. The unit is s.

Default value: 10min (600s)

autovacuum_vacuum_threshold

Parameter description: Specifies the threshold for triggering the VACUUM operation. When the number of deleted or updated records in a table exceeds the specified threshold, the VACUUM operation is executed on this table.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 0 to 2147483647.

Default value: 50

autovacuum_analyze_threshold

Parameter description: Specifies the threshold for triggering the ANALYZE operation. When the number of deleted, inserted, or updated records in a table exceeds the specified threshold, the ANALYZE operation is executed on this table.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 0 to 2147483647.

Default value: 50

autovacuum_vacuum_scale_factor

Parameter description: Specifies a fraction of the table size added to the autovacuum_vacuum_threshold parameter when deciding whether to vacuum a table.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: a floating point number ranging from 0.0 to 100.0

Default value: 0.2

autovacuum_analyze_scale_factor

Parameter description: Specifies a fraction of the table size added to the autovacuum_analyze_threshold parameter when deciding whether to analyze a table.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: a floating point number ranging from 0.0 to 100.0

Default value: 0.1

autovacuum_freeze_max_age

Parameter description: Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before a VACUUM operation is performed.

  • The old files under the subdirectory of pg_clog/ can also be deleted by the VACUUM operation.
  • Even if the autovacuum process is not started, the system will invoke the process to prevent transaction ID wraparound.

This parameter is a POSTMASTER parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 100000 to 576460752303423487

Default value: 4000000000

autovacuum_vacuum_cost_delay

Parameter description: Specifies the value of the cost delay used in the autovacuum operation.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from –1 to 100. The unit is ms. –1 indicates that the normal vacuum cost delay is used.

Default value: 20ms

autovacuum_vacuum_cost_limit

Parameter description: sets the value of the cost limit used in the autovacuum operation.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from –1 to 10000 –1 indicates that the normal vacuum cost limit is used.

Default value: –1

twophase_clean_workers

Parameter description: Specifies the maximum number of concurrent cleanup operations that can be performed by the gs_clean tool.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 1 to 10

Default value: 3

defer_csn_cleanup_time

Parameter description: Specifies the interval of recycling transaction IDs.

This parameter is a SIGHUP parameter. Set it based on instructions provided in Table 2.

Value range: an integer ranging from 0 to 2147483647

Default value: 5s (5000 ms)