解析 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 可以确保数据库的性能保持在一个良好的水平,提高系统的稳定性和可靠性。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA内存模型与JVM内存结构

注意区分Java内存模型(Java Memory Model,简称JMM)与Jvm内存结构,前者与多线程相关,后者与JVM内部存储相关。本文会对两者进行简单介绍。 一、JAVA内存模型(JMM) 1. 概念 说来话长,由于在不同硬件厂商和…

No matching version found for @babel/traverse@^7.24.0.

问题: npm安装 依赖失败,找不到所需依赖。 原因: npm镜像源中没有该依赖。(大概率是因为依赖最近刚更新,当前镜像源没有同步) 解决: 查看自己的npm镜像:npm config get registry…

机器学习-面经(part2)

3. 验证方式 3.1什么是过拟合?产生过拟合原因? 定义:指模型在训练集上的效果很好,在测试集上的预测效果很差 数据有噪声 训练数据不足,有限的训练数据 训练模型过度导致模型非常复杂3.2 如何避免过拟合问题? 3.3 什么是机器学习的欠拟合?产生原…

D4890可应用在对讲机上,采用 SOP8/MSOP8两种封装形式

D4890 目前客户主要使用在对讲机上,电压范围2.2V ~ 5.5V之间,输出功率(THDN1%)1.0W/8Ω 5.0V。采用 SOP8/MSOP8两种封装形式。 2、推荐的应用线路图如下: 3、实际测试输出波形如下(VCC4.5V&…

Web Component 转图片

一、HTML 转图片 目前,常见的开源的能够将 HTML 转换为图片有html2canvas、dom-to-image,大部分场景下,这些开源库都能很友好的处理。 HTML 转图片的实现原理,通常分为两种:svg 与 canvas。今天主要讨论下 svg 的场景…

Flutter中使用Dio库封装网络请求服务工具类

在Flutter应用程序中,进行网络请求是非常常见的任务。Dio是一个强大的、易于使用的Dart包,用于处理HTTP请求。本篇博客将介绍如何封装Dio库,以及如何在Flutter应用中进行网络请求并取消请求。 什么是Dio? Dio是一个基于Dart语言…

解决android studio build Output中文乱码

1.效果如下所示: 代码运行报错的时候,Build Output报的错误日志中中文部分出现乱码,导致看不到到底报的什么错。 2.解决办法如下: 点击Android studio开发工具栏的Help-Edit Custom VM Options....,Android studio会…

springboot微服务中集成了mybatis的服务引入了其他集成了mybatis的服务此时调用引入的服务中的某个mapper接口时报没有注入

在启动类上加引入的服务中的mapper路径,在配置文件中将mapperLocations的值改为classpath*:mapper/.xml: MapperScan(basePackages {"com.ruoyi..mapper"}) 和 mapperLocations: classpath*:mapper/*.xml 是 MyBatis 在 Spring Boot 中配置 M…

AutoGPT实现原理

AutoGPT是一种利用GPT-4模型的自动化任务处理系统,其主要特点包括任务分配、多模型协作、互联网访问和文件读写能力以及上下文联动记忆性。其核心思想是通过零样本学习(Zero Shot Learning)让GPT-4理解人类设定的角色和目标,并通过…

端口号被占用时的解决办法

1、查看端口占用的进程号 netstat -ano |findstr 8080 2、 找到占用端口的程序 tasklist |findstr 2264 3、kill端口 taskkill /pid 2264 /f

文物预防性保护方案整体结构及软件介绍

​文物预防性保护监测与调控系统整体是构架在商业级技术平台上的多层综合性应用,采用分布式部署的模块化设计,以智能监测终端及高精传感器为核心的感知系统。系统通过以下的层次结构协同工作完成全面的监控与调控功能: 1)系统依靠文物监测调控模型作为运行核心&…

基于springboot+vue的校园爱心捐赠互助管理系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 随着经济水平和生活水平的提高在校大学生在校需要处理的物品也在不断增加,同时校园内还存在很多贫困生,可以通过线上平台实现资源的整合和二次利用,通过线上平台求助信…

护眼灯有效果吗怎么样?推荐五款值得入手的护眼台灯

随着护眼台灯被越来越多的人解锁新的护眼攻略,它的产品热度也越来越高,而且光线柔和,是一款非常不错的照明用具。但是也有不少用户反馈买到的护眼台灯效果不好,有时候还会觉得刺眼,有些不合格的台灯使用时间一久还会散…

动态IP代理技术在网络爬虫中的实际使用

目录 一、动态IP代理技术概述 二、动态IP代理技术的优势 三、动态IP代理技术的实际应用 四、注意事项 五、案例分析 六、结论 随着互联网的迅猛发展,网络爬虫成为了获取信息、分析数据的重要工具。然而,在进行大规模爬取时,爬虫常常面临…

gin gorm学习笔记

代码仓库 https://gitee.com/zhupeng911/go-advanced.git https://gitee.com/zhupeng911/go-project.git 1. gin介绍 Gin 是使用纯 Golang 语言实现的 HTTP Web框架,Gin接口设计简洁,提供类似Martini的API,性能极高,现在被广泛使用…

《C语言缺陷和陷阱》-笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 在这一节中,我们将探索对记号的意义的普遍的误解以及记号和组成它们的字…

指针习题二

使用函数指针实现转移表 #include <stdio.h> int add(int a, int b) {return a b; } int sub(int a, int b) {return a - b; } int mul(int a, int b) {return a * b; } int div(int a, int b) {return a / b; } int main() {int x, y;int input 1;int ret 0;int(*p[…

学习python时一些笔记

1、winr 命令提示符的快捷键 输入cmd进入终端 2、在终端运行桌面上的python文件 cd desktop(桌面) cd是进入该文件夹的意思。 cd .. 回到上一级 运行python时一定要找到文件的所在地 输入python进入&#xff0c;exit()退出%s字符串占位符%d数字占位符%f浮点数占位符input输…

Linux速览(1)——基础指令篇

在上一章对Linux有了一些基础了解之后&#xff0c;本章我们来学习一下Linux系统下一些基本操作的常用的基础指令。 目录 1. ls 指令 2. pwd&&whoami命令 3. cd 指令 4. touch指令 5.mkdir指令&#xff08;重要&#xff09;&#xff1a; 6.rmdir指令 && …

vue面试题:如何保存页面的当前的状态?

如何保存页面的当前的状态&#xff1f; 既然是要保持页面的状态&#xff08;其实也就是组件的状态&#xff09;&#xff0c;那么会出现以下两种情况&#xff1a;组件会被卸载&#xff1a;&#xff08;1&#xff09;将状态存储在LocalStorage / SessionStorage优点&#xff1a;缺…