欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

postgresql 数据库出现 autovacuum:VACUUM xxoo.xxoo (to prevent wraparound)

发布时间:2024/3/12 数据库 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 postgresql 数据库出现 autovacuum:VACUUM xxoo.xxoo (to prevent wraparound) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

os: centos 7.4
db: postgresql 10.10

postgresql 查看 pg_stat_activity 有时会看到 autovacuum:VACUUM xxoo.xxoo(to prevent wraparound) ,这个其实是预防事务ID回卷,原因是 postgresql 采用 32bit 事务id。

版本

# cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) # # su - postgres Last login: Sat Oct 26 22:55:25 CST 2019 on pts/0 $ $ psql -c "select version();"version ----------------------------------------------------------------------------------------------------------PostgreSQL 10.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit (1 row)

when

当表的 age 大于 autovacuum_freeze_max_age时,autovacuum 进程回自动对该表进行 freeze。

autovacuum:VACUUM public.tmp_t0 (to prevent wraparound)

默认的 autovacuum_freeze_max_age 值为 200000000

postgres=# select name,setting from pg_settings where name like 'autovacuum%' order by name;name | setting -------------------------------------+-----------autovacuum | onautovacuum_analyze_scale_factor | 0.1autovacuum_analyze_threshold | 50autovacuum_freeze_max_age | 200000000autovacuum_max_workers | 3autovacuum_multixact_freeze_max_age | 400000000autovacuum_naptime | 60autovacuum_vacuum_cost_delay | 20autovacuum_vacuum_cost_limit | -1autovacuum_vacuum_scale_factor | 0.2autovacuum_vacuum_threshold | 50autovacuum_work_mem | -1 (12 rows) SELECT c.oid::regclass as table_name,greatest(age(c.relfrozenxid),age(t.relfrozenxid)) as age from pg_class cLEFT OUTER JOIN pg_class t ON c.reltoastrelid = t.oid WHERE c.relkind IN ('r', 'm') order by 2 desc ; SELECT datname, age(datfrozenxid) FROM pg_database;

参考:
https://www.postgresql.org/docs/10/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND

总结

以上是生活随笔为你收集整理的postgresql 数据库出现 autovacuum:VACUUM xxoo.xxoo (to prevent wraparound)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。