1、错误信息

WARNING: database “postgres” must be vacuumed within 3330803 transactions

最常见的方法是通过此消息,警告您正在进行事务处理:

WARNING: database “postgres” must be vacuumed within XXX transactions. HINT: To avoid a database shutdown, execute a database-wide VACUUM in that database. You might also need to commit or roll back old prepared transactions.

或者更糟糕的是,以下消息表明您已经完成了 transaction wraparound,并且PostgreSQL正在尝试防止数据丢失:

ERROR: database is not accepting commands to avoid wraparound data loss in database “template0” HINT: Stop the postmaster and use a standalone backend to vacuum that database. You might also need to commit or roll back old prepared transactions.

2、处理方法:

在适当的数据库上执行建议的VACUUM; 这里我们使用默认数据库postgres,因此用适当的数据库名称替换该名称。

vacuumdb postgres

如果您收到上面提到的错误,并且数据库不再接受  命令
以下是在单用户模式下运行真空的步骤; 请注意,--single必须是命令行上的第一个命令:

# su - postgres /usr/pgsql-11/bin/postgres --single -D /var/lib/pgsql/11/data/ postgres PostgreSQL stand-alone backend 11.3 backend> vacuum freeze;

3、原理

PG的版本号是uint32的,是重复使用的,所以每隔大约20亿个事务后,必须要冻结,否则记录会变成未来的,对当前事务”不可见”。
同一个数据库中,存在的最旧和最新两个事务之间的年龄最多是2^31,即20亿

当表的年龄大于autovacuum_freeze_max_age时(默认是2亿),autovacuum进程会自动对表进行freeze。

–查询库xid

SELECT datname, age(datfrozenxid) FROM pg_database;

或者:select max(age(datfrozenxid)) from pg_database;

— 来查询每个表的xid使用程度

SELECT c.oid::regclass as table_name, greatest(age(c.relfrozenxid),age(t.relfrozenxid)) as age FROM pg_class c LEFT JOIN pg_class t ON c.reltoastrelid = t.oid WHERE c.relkind IN (‘r’, ‘m’) order by age desc;

这查询按照最老的XID排序,查看大于1G而且是排名前20的表。

SELECT relname, age(relfrozenxid) as xid_age, pg_size_pretty(pg_table_size(oid)) as table_size FROM pg_class WHERE relkind = 'r' and pg_table_size(oid) > 1073741824 ORDER BY age(relfrozenxid) DESC LIMIT 20;

建议使用vacuum freeze [ table_name ] 来对指定的表进行xid 冻结清理。

执行vacuum freeze pg_database 。其他table 根据需要freeze

PostgreSQL维护年龄的处理的更多相关文章

  1. PostgreSQL中的索引(一)

    引言 这一系列文章主要关注PostgreSQL中的索引. 可以从不同的角度考虑任何主题.我们将讨论那些使用DMBS的应用开发人员感兴趣的事项:有哪些可用的索引:为什么会有这么多不同的索引:以及如何使用 ...

  2. 写给小白看的Mysql事务

    1 为什么需要事务 在网上的很多资料里,其实没有很好的解释为什么我们需要事务.其实我们去学习一个东西之前,还是应该了解清楚这个东西为什么有用,硬生生的去记住事务的ACID特性.各种隔离级别个人认为没有 ...

  3. linux系统服务名称

    服务列表(按字母顺序排列) 服务名 必需(是/否) 用途描述 acon 否 语言支持 acpi 否 电源管理 acpid 否 监听精灵进程 adsl 否 内部ADSL开关控制 alsa 否 高级Lin ...

  4. LINUX常见服务列表

    服务名        必需(是/否)用途描述        注解 acon              否       语言支持        特别支持左手书写语言:阿拉伯语,波斯语和希伯莱语 acpi ...

  5. BUAA_OO_第三单元

    一.JML初探 ​ JML(Java Modeling Language)作为一种形式化语言,可以约束Java代码中类和方法的状态和行为形成规格,通过将一系列具体代码实现抽象成明确的行为接口,可以形成 ...

  6. PostgreSQL、Greenplum 日常监控 和 维护任务

    背景 Greenplum的日常监控点.评判标准,日常维护任务. 展示图层 由于一台主机可能跑多个实例,建议分层展示. 另外,即使是ON ECS虚拟机(一个虚拟机一个实例一对一的形态)的产品形态,实际上 ...

  7. MySQL,Oracle,PostgreSQL 数据库web维护客户端管理工具

    TreeDMS数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能包 ...

  8. PostgreSQL数据库web维护客户端工具软件

    TreeSoft数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能 ...

  9. MySQL,Oracle,PostgreSQL通过web方式管理维护, 提高开发及运维效率

    在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 ...

  10. postgresql如何维护WAL日志/归档日志

    WAL日志介绍 wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性.而在PostgreSQL 7中引入的 ...

随机推荐

  1. 使用Java刷评论为平台引流的经历

    场景:需要在一网站中批量评论留言. 分析接口: 列表接口获取idList,返回的是json数据直接用FastJson转就可以,如果返回的是HTML片段,则需要使用Jsoup进行提取,值得一学,常用于爬 ...

  2. RFN-Nest_ An end-to-end residual fusion network for infrared and visible images 论文解读

    RFN-Nest 2021 研究 图像融合分为三步:特征提取,融合策略,图像重建. 当前端到端的图像融合方法:基于GAN的.还有本文提出的 研究背景:当前设计的融合策略在为特定任务生成融合图像方面是比 ...

  3. 利用node快速生成脚本

    整理框架时突然发现两个文件从来没有使用过,删除的瞬间仿佛get到了用处. fs 可用于与文件系统进行交互模块 path 提供一些实用工具,用于处理文件和目录的路径 process.argv 返回一个数 ...

  4. echarts map地图中绘制浙江省市区县乡镇多级联动边界下钻的最新geojson数据文件获取和更新

    目录 ECharts Map地图的显示 GeoJSON数据文件获取 在ECharts中绘制浙江省的数据 ECharts Map地图的显示 ECharts支持地理坐标显示,专门提供了一个geo组件,在s ...

  5. day37-文件上传和下载

    文件上传下载 1.基本介绍 在Web应用中,文件上传和下载是非常常见的功能 如果是传输大文件一般用专门的工具或者插件 文件上传和下载需要用到两个包:commons-fileupload.jar和com ...

  6. <二>vector向量容器

    底层数据结构:动态开辟的数组,每次以原始空间2倍扩容 vector vec; 增加 vec.push_back(100);容器末尾加元素 时间负责度O(1) 可能导致容器扩容 容器中的,对象的构造析构 ...

  7. Python免杀过360

    本文章仅供参考学习 作者:mantou 博客地址:https://www.cnblogs.com/mantou0/ 分离免杀 这个我就不多说了,效果确实不错,网上关于分离免杀的也有很多文章 不分离过3 ...

  8. Django(2) - Django模板

    1.Django模板介绍 基础概念 模板是具有一定的格式或骨架,可以动态的生成HTML 模板引擎决定以何种方式组织代码 一个项目可以有一个或者是多个模板引擎,Django里面主要两个模板引擎:DTL. ...

  9. 一次SQL调优 聊一聊 SQLSERVER 数据页

    一:背景 1.讲故事 最近给一位朋友做 SQL 慢语句 优化,花了些时间调优,遗憾的是 SQLSERVER 非源码公开,玩起来不是那么顺利,不过从这次经历中我觉得明年的一个重大任务就是好好研究一下它, ...

  10. 【ASP.NET Core】按用户等级授权

    验证和授权是两个独立但又存在联系的过程.验证是检查访问者的合法性,授权是校验访问者有没有权限查看资源.它们之间的联系--先验证再授权. 贯穿这两过程的是叫 Claim 的东东,可以叫它"声明 ...