PostgreSQL年龄的处理

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 实例周期性的IO升高,是因为数据库周期性执行autovacuum所致。 这种情况通常是因为频繁的更新、修改,引起年龄的增长、或脏数据的产生,从而触发autovacuum进行回收 具体autovacuum的机制可以参考  http://www.
实例周期性的IO升高,是因为数据库周期性执行autovacuum所致。

这种情况通常是因为频繁的更新、修改,引起年龄的增长、或脏数据的产生,从而触发autovacuum进行回收。

1. 查询库的年龄

SELECT   $$nos_db$$ AS env_name , 
         Current_database(), 
         nspname, 
         CASE relkind 
                  WHEN $$r$$ THEN $$ordinary table$$ 
                  WHEN $$t$$ THEN $$toast table$$ 
         END AS relkind, 
         relname, 
         age(relfrozenxid), 
         CASE 
                  WHEN ( 
                                    substring(reloptions::text,$$autovacuum_freeze_max_age=(\d+)$$)::int8) IS NOT NULL THEN (substring(reloptions::text,$$autovacuum_freeze_max_age=(\d+)$$)::int8)-age(relfrozenxid) 
                  ELSE 
                        ( 
                        SELECT setting 
                        FROM   pg_settings 
                        WHERE  name=$$autovacuum_freeze_max_age$$)::int8 - age(relfrozenxid) 
         END AS age_remain 
FROM     pg_class t2 
join     pg_namespace t3 
ON       t2.relnamespace=t3.oid 
WHERE    t2.relkind IN ($$t$$, 
                        $$r$$) 
AND      t2.relname LIKE 't_%' 
ORDER BY age(relfrozenxid) DESC;


根据vacuum_freeze_min_age、autovacuum_freeze_max_age、vacuum_freeze_table_age等参数,判断是否是因为年龄触发的。 该文档中有说明 http://xmarker.blog.163.com/blog/static/2264840572014524112214193/


2. 如果年龄比较高,则执行vacuum freeze

vacuum freeze 的锁粒度较小,且执行较快。  参考中的vacuum freeze相关的介绍  http://www.postgres.cn/docs/9.3/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND

此时,可以解决由年龄触发的autovacuum。


3. 脏数据

经常更新,很容易造成脏数据,导致表的膨胀,请参考文档中的2.2部分 http://gitbook.cn/books/58db93b8f59193805502b491/index.html

可以先做下vacuum,然后看下表的空间占用是否会下降。必要的话,请做下vacuum full。


4. 业务维护

vacuum full可以解决当前频繁触发autovacuum的问题。正常情况下,autovacuum工作的很好,但鉴于当前业务更新量超大的情况,建议做好年龄和脏数据的监控,并及时处理。 或者在了解autovacuum的原理后,调整参数来适应业务,这个参考  http://www.postgres.cn/docs/9.3/runtime-config-autovacuum.html  




参考:

1. 具体autovacuum的机制可以参考  http://www.postgres.cn/docs/9.3/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND
2. autovacuum相关参数 http://www.postgres.cn/docs/9.3/runtime-config-autovacuum.html  
3. MVCC:
http://www.jasongj.com/sql/mvcc/
https://mp.weixin.qq.com/s?__biz=MzI5MTQ3ODU4Nw==&mid=2247483739&idx=1&sn=06e4ea74b2a94c277c89c0fa0aa58a0e
https://mp.weixin.qq.com/s/so-MaqrUtncT8pbRngUcDA
https://my.oschina.net/liuyuanyuangogo/blog/497929
http://www.jianshu.com/p/f73b9f36e555
4. checkpoint:
https://yq.aliyun.com/articles/72500
http://mysql.taobao.org/monthly/2017/04/04/
http://www.jianshu.com/p/a37ceed648a8
https://kb.cnblogs.com/page/76601/   
5. 关于数据库中的年龄:
http://francs3.blog.163.com/blog/static/405767272012469589239
http://xmarker.blog.163.com/blog/static/2264840572014524112214193/
https://yq.aliyun.com/articles/50411
6. 可以参考的官方文档:
http://www.postgres.cn/docs/9.3/

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
JSON 前端开发 JavaScript
AVUE:前端搬砖神器,一套基于vue+elementUI的框架
AVUE:前端搬砖神器,一套基于vue+elementUI的框架
2280 0
AVUE:前端搬砖神器,一套基于vue+elementUI的框架
|
存储 安全 索引
vacuum freeze无法回收事务号问题分析
vacuum freeze报错问题分析
4764 0
|
Windows 安全
远程桌面和云主机,可以听到云主机内部的声音
有些云主机用户,在使用云主机的时候想借助云主机的高带宽听音乐或者看视频的,那么如何设置远程桌面和云主机,可以听到云主机内部的声音?下面小编就来个图文教程,希望能帮助到这些客户使用云主机。   本地计算机需要进行的设置: 1、打开本地机器的远程登录功能,这里介绍一种快捷的方式。
2731 0
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
11月前
|
JSON 监控 API
获取1688商品SKU信息API接口及实战应用
在电商蓬勃发展的今天,数据成为宝贵的财富。1688作为国内知名批发采购平台,提供商品SKU信息API接口,可获取库存、价格、规格等关键数据,助力电商运营、市场分析和价格监控。本文介绍如何注册1688开放平台账号、创建应用并获取AppKey/AppSecret,申请API权限,使用Python实现接口调用,处理响应数据,并注意请求频率限制和错误处理。通过该接口,可为电商运营和数据分析提供有力支持。
464 2
|
算法 关系型数据库 数据库
德哥的PostgreSQL私房菜 - 史上最屌PG资料合集
看完并理解这些文章,相信你会和我一样爱上PostgreSQL,并成为PostgreSQL的布道者。 沉稳的外表无法掩饰PG炙热的内心 。 扩展阅读,用心感受PostgreSQL 内核扩展 《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》https://yq.
58882 152
|
Java Linux Maven
Maven 仓库
Maven仓库管理依赖,包括本地、中央和远程仓库。本地仓库在首次运行时创建,默认位于用户目录的`.m2/repository`。若本地缺少构件,Maven会从远程仓库下载,中央仓库是默认的远程源,包含大量开源Java构件。中央仓库无需配置,可通过HTTP访问,[search.maven.org](http://search.maven.org/#browse)可浏览其内容。
|
缓存 Java
8 种 Java 内存溢出之一:Java Heap Space
8 种 Java 内存溢出之一:Java Heap Space
|
存储 Kubernetes 分布式数据库
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
720 0
|
存储 机器学习/深度学习 人工智能
向量数据库简介和5个常用的开源项目介绍
在人工智能领域,有大量的数据需要有效的处理。随着我们对人工智能应用,如图像识别、语音搜索或推荐引擎的深入研究,数据的性质变得更加复杂。这就是向量数据库发挥作用的地方。与存储标量值的传统数据库不同,向量数据库专门设计用于处理多维数据点(通常称为向量)。这些向量表示多个维度的数据,可以被认为是指向空间中特定方向和大小的箭头。
4309 1