当前位置: 首页 > news >正文

openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表

文章目录

    • openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表
      • 140.1 相关概念
      • 140.2 操作步骤
      • 140.3 维护建议

openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表

为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。

140.1 相关概念

使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因:

  • VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。
  • VACUUM对每个表维护了一个可视化映射来跟踪包含对别的活动事务可见的数组的页。一个普通的索引扫描首先通过可视化映射来获取对应的数组,来检查是否对当前事务可见。若无法获取,再通过堆数组抓取的方式来检查。因此更新表的可视化映射,可加速唯一索引扫描。
  • VACUUM可避免执行的事务数超过数据库阈值时,事务ID重叠造成的原有数据丢失。
  • ANALYZE可收集与数据库中表内容相关的统计信息。统计结果存储在系统表PG_STATISTIC中。查询优化器会使用这些统计数据,生成最有效的执行计划。

140.2 操作步骤

  1. 使用VACUUM或VACUUM FULL命令,进行磁盘空间回收。

    • VACUUM

      对表执行VACUUM操作

      openGauss=# VACUUM customer;
      
      VACUUM
      

      可以与数据库操作命令并行运行。(执行期间,可正常使用的语句:SELECT、INSERT、UPDATE和DELETE。不可正常使用的语句:ALTER TABLE)。

      对表分区执行VACUUM操作

      openGauss=# VACUUM customer_par PARTITION ( P1 );
      
      VACUUM
      
    • VACUUM FULL

      openGauss=# VACUUM FULL customer;
      
      VACUUM
      

      需要向正在执行的表增加排他锁,且需要停止其他所有数据库操作。

  2. 使用ANALYZE语句更新统计信息。

    openGauss=# ANALYZE customer;
    
    ANALYZE
    

    使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。

    openGauss=# ANALYZE VERBOSE customer;
    
    ANALYZE
    

    也可以同时执行VACUUM ANALYZE命令进行查询优化。

    openGauss=# VACUUM ANALYZE customer;
    
    VACUUM
    

    img 说明: VACUUM和ANALYZE会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。因此,建议通过“vacuum_cost_delay”参数设置《数据库参考》中“GUC参数说明 > 资源消耗 > 基于开销的清理延迟”。

  3. 删除表。

    openGauss=# DROP TABLE customer;
    openGauss=# DROP TABLE customer_par;
    openGauss=# DROP TABLE part;
    

    当结果显示为如下信息,则表示删除成功。

    DROP TABLE
    

140.3 维护建议

  • 定期对部分大表做VACUUM FULL,在性能下降后为全库做VACUUM FULL,目前暂定每月做一次VACUUM FULL。
  • 定期对系统表做VACUUM FULL,主要是PG_ATTRIBUTE。
  • 启用系统自动清理线程(AUTOVACUUM)自动执行VACUUM和ANALYZE,回收被标识为删除状态的记录空间,并更新表的统计数据。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

http://www.lryc.cn/news/252808.html

相关文章:

  • ubuntu20.04使用LIO-SAM对热室空间进行重建
  • 如何选学生用的台灯?眼科专家都说好的学生台灯分享!
  • Linux4.8、环境变量续
  • PTA 7-231 买文具
  • GPTs每日推荐--生化危机【典藏版】
  • jenkins-cicd基础操作
  • ctfhub技能树_web_信息泄露
  • 使用Docker本地部署chatgpt
  • SpringBoot 集成Netty、WebSocket,5分钟搭建聊天通信系统
  • LeedCode刷题---双指针问题
  • 使用Notepad++编辑器,安装AnalysePlugin搜索插件
  • 胶囊网络实现手写数字分类
  • Java零基础-if条件语句
  • 中国证券交易所有哪些
  • 欢迎回到 C++ - 现代 C++(心得-壹)
  • 【Vue3+Ts项目】硅谷甄选 — 搭建后台管理系统模板
  • MATLAB 系统辨识 - 在线估计 - Online Estimation
  • 【Java面试——基础题】
  • Haiku库和Jax库介绍
  • 2023-简单点-proxyPool源码(二)-setting.py
  • 中级工程师评审条件:如何成为一名合格的中级工程师
  • StarRocks上新,“One Data、All Analytics”还有多远?
  • Java8实战-总结50
  • kicad源代码研究:参照Candence实现工程管理
  • Asp.net core WebApi 配置自定义swaggerUI和中文注释,Jwt Bearer配置
  • DNS 查询结果逐行解释
  • ArcGIS制作广场游客聚集状态及密度图
  • 同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client接收数据
  • MQ - KAFKA 高级篇
  • 如何快速查找最后(最右侧)隐藏列