19.10. 自动吸尘

这些设置控制* autovacuum *功能的行为。有关更多信息,请参考Section 24.1.6。请注意,许多设置可以按表被覆盖;参见Storage Parameters

  • autovacuum ( boolean )
    • 控制服务器是否应运行 autovacuum 启动器守护程序。默认情况下,这是打开的;但是,还必须启用track_counts才能使自动真空工作。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是,可以通过更改表存储参数来禁用单个表的自动抽真空。

请注意,即使禁用此参数,系统也会在必要时启动自动清理进程以防止事务 ID 绕回。有关更多信息,请参见Section 24.1.5

  • log_autovacuum_min_duration ( integer )

    • 如果自动抽空执行的每个动作至少运行了指定的毫秒数,则将其记录下来。将此设置为零将记录所有自动真空操作。减一(默认)禁用日志记录自动抽真空操作。例如,如果将其设置为250ms,则将记录所有运行 250ms 或更长时间的自动吸尘和分析。另外,如果将此参数设置为-1以外的任何值,则由于存在冲突的锁而跳过自动真空操作时,将记录一条消息。启用此参数有助于跟踪自动真空活动。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。
  • autovacuum_max_workers ( integer )

    • 指定可以一次运行的最大自动真空进程数(自动真空启动程序除外)。默认值为三。该参数只能在服务器启动时设置。
  • autovacuum_naptime ( integer )

    • 指定在任何给定数据库上运行自动清理之间的最小延迟。在每个回合中,守护程序都会检查数据库,并根据该数据库中的表的需要发出VACUUMANALYZE命令。延迟以秒为单位,默认值为一分钟(1min)。此参数只能在postgresql.conf文件或服务器命令行中设置。
  • autovacuum_vacuum_threshold ( integer )

    • 指定触发任一表中的VACUUM所需的最小更新或删除的 Tuples 数。默认值为 50Tuples。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。
  • autovacuum_analyze_threshold ( integer )

    • 指定触发任一表中的ANALYZE所需的最小插入,更新或删除的 Tuples 数。默认值为 50Tuples。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。
  • autovacuum_vacuum_scale_factor ( floating point )

    • 指定决定是否触发VACUUM时要添加到autovacuum_vacuum_threshold的表大小的一部分。默认值为 0.2(表大小的 20%)。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。
  • autovacuum_analyze_scale_factor ( floating point )

    • 指定决定是否触发ANALYZE时要添加到autovacuum_analyze_threshold的表大小的一部分。默认值为 0.1(表大小的 10%)。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。
  • autovacuum_freeze_max_age ( integer )

    • 指定表的pg_class的最大年龄(在事务中)。在强制执行VACUUM操作以防止表中的事务 ID 环绕之前,可以达到relfrozenxid字段。请注意,即使禁用自动抽真空,系统也会启动自动抽真空进程以防止卷回。

真空还允许从pg_xact子目录中删除旧文件,这就是默认值相对较低的 2 亿个事务的原因。只能在服务器启动时设置此参数,但是可以通过更改表存储参数来减少单个表的设置。有关更多信息,请参见Section 24.1.5

  • autovacuum_multixact_freeze_max_age ( integer )
    • 指定表的pg_class的最大年龄(以多重为单位)。在强制执行VACUUM操作以防止表中进行多重 ID 环绕之前,可以达到relminmxid字段。请注意,即使禁用自动抽真空,系统也会启动自动抽真空进程以防止卷回。

清理 multixact 还可以从pg_multixact/memberspg_multixact/offsets子目录中删除旧文件,这就是为什么默认值是相对较低的 4 亿 multixact。只能在服务器启动时设置此参数,但是可以通过更改表存储参数来减少单个表的设置。有关更多信息,请参见Section 24.1.5.1

  • autovacuum_vacuum_cost_delay ( integer )

    • 指定将在自动VACUUM操作中使用的成本延迟值。如果指定-1,则将使用常规vacuum_cost_delay值。默认值为 20 毫秒。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。
  • autovacuum_vacuum_cost_limit ( integer )

    • 指定将在自动VACUUM操作中使用的成本限制值。如果指定-1(默认值),则将使用常规vacuum_cost_limit值。请注意,如果有多个值,该值将在正在运行的自动真空工之间按比例分配,因此每个工的限制总和不会超过此变量的值。此参数只能在postgresql.conf文件中或在服务器命令行上设置;否则,请参见。但是可以通过更改表存储参数来覆盖单个表的设置。