【发布时间】:2014-11-28 06:18:09
【问题描述】:
我的生产 PostgreSQL 遇到了一个问题,它基本上与环绕问题有关,因为 XID 范围超出限制。
这个 PostgreSQL 生产运行了 1 年多,有大量事务和批量插入。
我在谷歌上搜索了很多,但对这个严重错误感到困惑和害怕。现在我在任何吸尘或自动吸尘过程中都会遇到这个错误。 我有大约 250 GB 的 Postgres 生产数据库,并且我还为所有表设置了 auto-vacuum。
Error and Warning are:
WARNING: oldest xmin is far in the past
HINT: Close open transactions soon to avoid wraparound problems.
我还检查了当前打开的事务,但 Postgres 会话中没有任何长时间运行的事务。
Current database age of XID :
Database Age
"template1"; 153163876
"template0"; 153163876
"postgres"; 153163876
"dispatcher"; 153163876
"qate"; 195568300
我使用以下查询得到的结果:
SELECT datname, age(datfrozenxid) FROM pg_database;
请尽快提供您的意见,因为这很快就会给我的生产数据库带来问题。
【问题讨论】:
-
你能负担得起强行关闭未结交易吗?
-
感谢 Erwin,但我没有为 PostgreSQL 找到任何长时间运行的进程。
-
然后一个普通的 VACUUM
should就能完成它的工作......
标签: sql postgresql transactions postgresql-9.3 vacuum