解析 openGauss 的 AutoVacuum 机制及优化策略

9ee039ba4dd0d33097c234b49cb1d611.jpeg

前言

在 openGauss 数据库中,AutoVacuum 机制是一个关键的自动化功能,用于管理表的空间和性能。AutoVacuum 通过定期清理过时数据和更新统计信息,帮助数据库管理员维护数据库的性能和稳定性。

为什么需要 AutoVacuum?


了解AutoVacuum之前,我们需要先了解一下Vacuum机制,当我们修改元组属性、执行重建索引等操作时,特别是多次进行更新、删除操作时,磁盘上就会出现了许多无效元组,此时就需要Vacuum操作清理这些“死元组”了。AutoVacuum顾名思义就是“自动”进行的Vacuum操作 ,它是数据库系统的一个自动化功能,用于定期清理数据库表中的过时数据,释放存储空间,并更新表的统计信息。它通过后台进程扫描表,识别并清理过时数据,以维护数据库性能和稳定性。AutoVacuum 的主要作用是优化数据库性能,防止存储空间的过度占用,以及确保查询优化器能够生成准确的执行计划。

AutoVacuum 的工作原理


AutoVacuum是后台自动触发Vacuum的一套逻辑,到达了什么样的条件时,自动触发vacuum。后台有常驻线程AVClauncher。这个线程每隔一定的间隔会同志PM线程来唤起一些AVCWorker线程,由AVCWorker进行实际的vacuum与analyze任务。涉及到的时间间隔、唤起的worker的数量等,都有相关的GUC参数可配 ,AutoVacuum 通过后台进程定期扫描数据库中的表,执行以下关键步骤:

  1. 识别过时数据:AutoVacuum 分析表中的数据行,识别哪些数据行已经过时   并可以被清理。

  2. 执行 VACUUM 操作:一旦识别出过时数据,AutoVacuum 会执行 VACUUM      操作,将过时数据行标记为可重用的空间。

  3. 更新统计信息:AutoVacuum 还会更新表的统计信息,以确保查询优化器能够做出正确的执行计划。

在 openGauss 中,可以通过配置参数来调整 AutoVacuum 的行为,包括:

   配置参数


- autovacuum: 指定数据库自动清理线程(autovacuum)的启动。

- autovacuum_mode: 该参数仅在autovacuum设置为on的场景下生效,它控制autoanalyze或autovacuum的打开情况。

- autovacuum_io_limits:控制autovacuum线程每秒触发IO的上限。

- autoanalyze_timeout:设置autoanalyze的超时时间。在对某张表做autoanalyze时,如果该表的analyze时长超过了autoanalyze_timeout,则自动取消该表此次analyze。

- log_autovacuum_min_duration:当自动清理的执行时间大于或者等于某个特定的值时,向服务器日志中记录本次自动清理执行的概要信息。设置此选项有助于追踪自动清理的行为。

- autovacuum_naptime:设置两次自动清理操作的时间间隔。

- autovacuum_vacuum_threshold:指定触发 VACUUM 操作的最小行数阈值。

- autovacuum_analyze_threshold:指定触发分析(ANALYZE)操作的最小行数阈值。

- autovacuum_vacuum_scale_factor:指定触发 VACUUM 操作的行数相对于表大小的比例因子。

- autovacuum_freeze_max_age:设置事务内的最大时间,使得表的pg_class.relfrozenxid字段在VACUUM操作执行之前被写入。

- autovacuum_analyze_scale_factor:指定触发分析操作的行数相对于表大小的比例因子。优化 AutoVacuum 性能

除了基本配置外,还可以通过以下策略优化 AutoVacuum 的性能:

- 调整参数设置:根据数据库的负载和表的特性,调整 AutoVacuum 相关参数,以提高清理效率。

- 定期监控和调整:定期监控数据库性能和 AutoVacuum 运行情况,根据实际情况调整配置。

- 合理分配资源:确保为 AutoVacuum 进程分配足够的资源,以避免影响正常数据库操作。

Autovacuum的优势

自动化管理:减少了手动维护的工作量,提高了数据库的稳定性和可靠性。

性能优化:通过定期清理和优化表和索引,提高了查询性能和响应速度。

空间回收:及时回收垃圾数据,减少数据库膨胀的风险。

结语

AutoVacuum 机制是 openGauss 数据库中一个重要的自动化功能,它可以帮助数据库管理员有效地管理表的空间和性能。通过定期清理过时数据和更新统计信息,AutoVacuum 可以确保数据库的性能保持在一个良好的水平,提高系统的稳定性和可靠性。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/427592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SOCKS55代理 VS Http代理,如何选择?

在使用IPFoxy全球代理时,选择 SOCKS55代理还是HTTP代理?IPFoxy代理可以SOCKS55、Http协议自主切换,但要怎么选择?为解决这个问题,得充分了解两种代理的工作原理和配置情况。 在这篇文章中,我们会简要介绍 …

第15届蓝桥STEMA测评真题剖析-2024年1月28日Scratch编程初中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第173讲。 第15届蓝桥第4次STEMA测评,这是2024年1月28日举办的STEMA,比赛仍然采取线上形式。这…

羊大师揭秘羊奶与健康,美味的保健佳品

羊大师揭秘羊奶与健康,美味的保健佳品 羊奶确实是一种美味且健康的保健佳品,其独特的营养成分和风味使其成为许多人的健康选择。以下是一些羊奶与健康的关系: 营养丰富:羊奶含有丰富的蛋白质、脂肪、矿物质和维生素,…

【latex过长或过短】 表格大小调整 解决方案

文章目录 1、表格过短 1.2 问题描述1.2 解决方案 2、表格过长,显示信息不全 2.1 问题描述2.2 解决方案 1、表格过短 1.2 问题描述 表格占整个页面的宽度较小,如下图: Latex源码如下:\begin{table*} \caption{short} \label{t1} …

OpenCompass 大模型评测介绍和实战

为什么要进行评测? 大模型的能力 模型评测对各个人的影响 如何评测大语言模型 客观评测 主观评测 prompt工程 平台结构 流水线设计 大模型评测对比 多模态探索 垂直领域(法律) 垂直领域(医疗) 大模型评测领…

Python 语句(二)【循环语句】

循环语句允许执行一个语句或语句组多次,其程序流程图如下: 在python中有三种循环方式: while 循环 当判断条件为 true 时执行循环体,否则退出循环体。for 循环 重复执行语句嵌套循环 (在while循环体中嵌套for循环&…

Java 打包 SpringBoot 项目报错

Java 打包 SpringBoot 项目报错 问题重现 Please refer to xxxx for the individual test results. Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream. 解决问题 在 pom.xml 的 <properties> 中添加项目代码 <s…

Python处理表格数据库之Agate使用详解

概要 您是否有时觉得在处理表格数据时感到不知所措? 也许你在处理一个大型 CSV 文件,遇到了各种数据不一致的问题,或者需要验证数据,确保其准确无误才能进行下一步分析。 传统的数据分析库或许功能强大,但学习曲线陡峭,用起来有点杀鸡用牛刀的感觉。 这时,有一个更…

2024六大创业营销趋势,普通人创业新风向!

2024年越来越多的人选择创业&#xff0c;从龙年春节前后&#xff0c;创投圈就开始探讨关于2024的创业新风向&#xff0c;从各个热点&#xff0c;各大品牌&#xff0c;春晚等等方面洞察2024创业趋势&#xff0c;以下总结的6大创业营销趋势&#xff0c;跟着大品牌押宝&#xff0c…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:焦点控制)

自定义组件的走焦效果&#xff0c;可设置组件是否走焦和具体的走焦顺序&#xff0c;tab键或者方向键切换焦点。 说明&#xff1a;从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 focusable focusable(value: boolean) 设…

一个iOS应用是如何启动以及如何优化

一、应用启动流程 1、主要阶段&#xff1a; 分为两个阶段&#xff0c;pre-main阶段和main()阶段。程序启动到main函数执行前是pre-main阶段&#xff1b;在执行main函数后&#xff0c;调用AppDelegate中的-application:didFinishLaunchingWithOptions:方法完成初始化&#xff…

uniapp和vue项目配置多语言,实现前端切换语言

在uniapp中配置多语言功能&#xff0c;实现前端切换语言&#xff0c;可以按照以下步骤进行&#xff1a; 1. 创建语言包 首先&#xff0c;创建一个名为 lang 的目录&#xff0c;并在该目录下为每种支持的语言创建对应的JSON或JS文件。例如&#xff1a; lang/en.js&#xff08…

微信小程序屏蔽控制台黄色提示信息

我们很多时候 一个小程序 啥都没有 终端就一直报一些黄色的警告 可以打开项目的 project.config.json 找一下setting 下面有没有 checkSiteMap 字段 如果没有加一个 如果有 直接将值改为 false 这样 再运行 就不会有这个黄色的提示信息了

K8S集群中如何删除并重新部署pod

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Linux CentOS使用Docker部署Apache Superset并实现远程分析数据

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

洛谷 B3620 x 进制转 10 进制

题目描述 给一个小整数 x 和一个 x 进制的数 S。将 S 转为 10 进制数。对于超过十进制的数码&#xff0c;用 A&#xff0c;B&#xff0c;…… 表示。 输入格式 第一行一个整数 x; 第二行一个字符串 S。 输出格式 输出仅包含一个整数&#xff0c;表示答案。 输入输出样例…

打造专属投屏体验:Windows系统投屏到iOS系统

想要将电脑投屏共享给同事或朋友&#xff0c;又担心隐私内容泄露&#xff1f;来来来&#xff0c;这里有妙招&#xff01; AirDroid Cast网页版让电脑投屏变得挑剔&#xff0c;只展示你允许共享的内容。会议资料、个人照片、敏感文件&#xff0c;都将得到严格的筛选&#xff0c;…

分布(四)利用python绘制小提琴图

分布&#xff08;四&#xff09;利用python绘制小提琴图 小提琴图 &#xff08;Violin plot&#xff09;简介 小提琴图主要用于显示数据分布及其概率密度。中间的黑色粗条表示四分位数范围&#xff0c;从其延伸的幼细黑线代表 95% 置信区间&#xff08;以外则为异常点&#xf…

如何理解工程管理,与项目管理的区别与联系?

如何理解工程管理&#xff0c;与项目管理的区别与联系&#xff1f; 首先&#xff0c;项目管理并不是工程管理的子集&#xff0c;大家可能混淆了另一个“工程项目管理”的概念。 工程项目管理模板一键安装&#xff0c;进入链接即可查看和使用&#xff1a;https://www.jiandaoyu…

Redis 之三:Redis 的发布订阅(pub/sub)

概念介绍 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff0c;它允许客户端之间进行异步的消息传递 Redis 客户端可以订阅任意数量的频道。 模型中的角色 在该模型中&#xff0c;有三种角色&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;负责发送信…