微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL 自动Vacuum配置

Postgresql的Vacuum由于以下原因需要定期执行。

  1. 释放,再利用因更新或者删除更新而占用的磁盘空间。
  2. 更新Postgresql 查询计划用的统计数据。

  3. 避免事务ID的重置而引起非常老的数据丢失。

VACUUM 的标准sql文的执行和其他的对数据库的实际操作可以并行处理。 SELECTINSERTUPDATEDELETE 等命令和同通常一样继续能够执行。但是,VACUUM处理中的时候, ALTER TABLE ADD COLUMN等等的命令不能够对表进行重新定义。 还有,由于执行VACUUM 的时候,有大量的I/O操作,其他的操作可能性能比较低,比如查询的反应非常慢。为了较少对性能的影响,可以通过参数来调整。

autovacuumboolean ):

数据库服务器是否设置为自动vacuum。认为 自动vacuum。 但是如果要让vacuum能够正常运转,必须使 track_counts 有效。 track_counts这个参数在 postgresql.conf配置文件内,或者通过命令来设置。

即使设置不是自动vacuum。系统发现有防止事务ID的重置的必要的时候也会自动启动

log_autovacuum_min_durationinteger ):

设置执行时间超过多长vacuum才输出log。时间单位毫秒。

如果这个参数设置为0的话,所有vacuum相关 的log都输出

如果这个参数设置为-1的话,这个也是认设置。log的输出无效,也就是所有vacuum相关 的log都不输出

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。


autovacuum_max_workersinteger ):

设置能够同时执行的vacuum最大进程数。 认是3个。

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。


autovacuum_naptimeinteger ):
设置数据库执行 vacuum的最小延迟。时间单位是分。认是1分钟。
这个参数的设置可以修改 postgresql.conf配置文件,也可以通过命令来设置。
autovacuum_vacuum_thresholdinteger ):

设置任何一张表内触发VACUUM 更新,删除tuple的最小数。认为50。

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。这个设定通过 pg_autovacuum的项目可以覆盖每张表。

autovacuum_analyze_thresholdinteger ):

设置任何一张表内触发ANALYZE 的更新,删除tuple的最小数。认为50。

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。这个设定通过 pg_autovacuum的项目可以覆盖每张表。

autovacuum_vacuum_scale_factorfloating point ):

是否触发VACUUM的判断的时候设置 autovacuum_vacuum_threshold 追加的表容量断片。认是0.2(即20%)。

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。这个设定通过 pg_autovacuum的项目可以覆盖每张表。

autovacuum_analyze_scale_factorfloating point ):

是否触发 ANALYZE 的判断的时候设置 autovacuum_vacuum_threshold 追加的表容量断片。认是0.1(即10%)。

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。这个设定通过 pg_autovacuum的项目可以覆盖每张表。

autovacuum_freeze_max_age (integer ):

为了防止事务ID的重置,VACUUM强制操作前,设置表的 pg_class .relfrozenxid字段的最大值。认是2亿。

这个参数只能够在启动的时候设置。

autovacuum_vacuum_cost_delayinteger ):

设置自动vacuum操作中cost延迟。认是20毫秒。设置的为-1的话,使用vacuum_cost_delay的值。

这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。这个设定通过 pg_autovacuum的项目可以覆盖每张表。


autovacuum_vacuum_cost_limitinteger ):

设置自动vacuum操作中cost的最大界限值。认是-1,这时候用vacuum_cost_limit的值。 这个参数的设置可以修改postgresql.conf配置文件,也可以通过命令来设置。这个设定通过 pg_autovacuum的项目可以覆盖每张表。

原文地址:https://www.jb51.cc/postgresql/197230.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐