如上篇文章提到,如果出现了autovacuum的问题,那么这可能是个悲伤的故事。怎么解决?

笔者觉得可以从如下几个方面着手去考虑解决问题,可以避免一些坑。
1) 持续观察,是不是autovacuum问题一直存在,如果只是偶尔出现一次,可能不需要那么慌张。因为很有可能是其他异常情况造成的。比如当时正在做大规模数据迁移等操作,这种操作如果是偶发的,大可不必在意。

2)
笔者一般的分析思路是从大到小,比如先检查外围的关键配置项,如果有必要的话,再去深究postgres
autovacuum相关的配置项。因为总体来说,调优和分析问题时要切记舍本逐末。就这个问题而言,我们知道数据库的读写操作,可以先分开看,这样比较容易理解。读,是从disk读取到OS(操作系统,如Windows/Linux等)
cache,再抓取到postgres cache(buffer),是这样一个过程。而写的操作相反,从postgres cache 先写到os
cache,再最后写入disk。所以说了那么多,是想表达,外围的设置非常关键,postgres服务器也应该预留足够的资源给操作系统(如内存,最好能达到20%,甚至更多一点),如果忽略了大的方面的配置检查和作业,很可能会使调优工作走向不归路。

3)如上篇文章提到的,autovacuum相关的配置,有大致12个之多,但是真正在开始调整这些参数时要注意的是,有些参数从我的经验来看,最好先不要动,比如“autovacumm_max_workers”;其默认值为3,当某些表dead

tuple增多时,特别是占用了50%以上tuples的时候,可以先调小参数“autovacuum_vacuum_scale_factor”的值。比如可以从默认的0.2调整为0.1,增加vacuum的频率,可能就能解决问题。autovacumm_max_workers最好先不动,是因为如果动了它,可能会有一些副作用,得不偿失,具体会在第4点说明。之前笔者在项目中就遇到了这样的坑。

4)如果此时vacuum的问题解决之后,发现有些SQL执行还是很慢,通过监控可能发现SQL执行时间起伏比较大。那么我们要知道一点的是,autovacuum过程不只做了vacuum的动作,其实还做了另外一个动作,那就是“Analyze",通俗来说,这个动作就是为了完成在tuples更新(磁盘更新)之后,执行计划也应该相应更新,以求得到最佳/最优执行计划等等,也很关键。大家可以通过调整“autovacuum_analyze_scale_factor”或参数“autovacuum_analyze_threshold”,如果对于表记录过多,如超过10000行,可以直接考虑调整前一个参数即可。

Autovacuum的问题调优,到这里告一段落。如果有其他问题或者项目中遇到奇怪的和autovacuum相关的问题,欢迎留言。谢谢!

转自微信公众号【TimTest】,原文地址为: https://mp.weixin.qq.com/s?__biz=MzI2OTYwMDc0MQ==&mid=2247483662&idx=1&sn=412f91a82b5373c72674e122c67c9d59&chksm=eadc9384ddab1a9232d9ef6c81563545c8ac3fe327dd57c9083f6d393951cbdfb5344a270ee4&token=2021082705&lang=zh_CN#rd

【转】postgreSQL​之autovacuum性能问题分析(二)的更多相关文章

  1. 【转】postgreSQL​之autovacuum性能问题分析(一)

    最近笔者在项目中遇到postgreSQL的性能问题,所以计划在公众号里写一个系列文章去追踪记录这些问题以及分析过程或解决方法. 本文主要是关于postgreSQL的autovacuum的问题.可能很多 ...

  2. TVM性能评估分析(二)

    TVM性能评估分析(二) Figure 1.  A bird's eye view of the µTVM + AutoTVM infrastructure Figure 2.  A standard ...

  3. Linux性能监控分析命令(二)—sar命令介绍

    性能监控分析的命令包括如下: 1.vmstat 2.sar 3.iostat 4.top 5.free 6.uptime 7.netstat 8.ps 9.strace 10.lsof ======= ...

  4. 【性能测试】常见的性能问题分析思路(二)案例&技巧

    上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...

  5. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  6. SQLite入门与分析(二)---设计与概念(续)

    SQLite入门与分析(二)---设计与概念(续)   写在前面:本节讨论事务,事务是DBMS最核心的技术之一.在计算机科学史上,有三位科学家因在数据库领域的成就而获ACM图灵奖,而其中之一Jim G ...

  7. list 、set 、map 粗浅性能对比分析

    list .set .map 粗浅性能对比分析   不知道有多少同学和我一样,工作五年了还没有仔细看过list.set的源码,一直停留在老师教导的:"LinkedList插入性能比Array ...

  8. Android4.0图库Gallery2代码分析(二) 数据管理和数据加载

    Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...

  9. Android App性能评测分析-流畅度篇

    1.前言 在手机App竞争越来越激烈的今天,Android App的各项性能特别是流畅度不如IOS,安卓基于java虚拟机运行,触控响应的延迟和卡顿比IOS系统严重得多.一些下拉上滑.双指缩放快速打字 ...

随机推荐

  1. Kubernetes 实战-Operator Finalizers 实现

    原文链接:https://zdyxry.github.io/2019/09/13/Kubernetes-%E5%AE%9E%E6%88%98-Operator-Finalizers/ Finalize ...

  2. WSGI 配置禁止反向DNS查找

    原文链接:https://opendev.org/starlingx/ha/src/commit/045a37c672a92f1412629a176f51183c88882e61/service-mg ...

  3. django学习(一)

    1.django版本的选择问题 在学习django之前,我们先做一个基本问题的讨论,这个问题是关于django版本的问题.我们进入官网,可以查看django版本的情况. 关于django的版本的问题, ...

  4. CentOS 7/8上部署Ceph

    Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象.块和文件存储,Ceph的大致组件如下: 1. Ceph监视器(ceph-mon):用来维护集群状态的映射,包括监视器映射,管理器映射, ...

  5. 01 . etcd简介原理,应用场景及部署,简单使用

    etcd简介 Etcd是CoreOS团队于2013年6月发起的开源项目,他的目标是构建一个高可用的分布式键值(key-value)数据库,etcd内部采用raft协议作为一致性算法,etcd基于Go语 ...

  6. Java面试题(Spring Boot/Spring Cloud篇)

    Spring Boot/Spring Cloud 104.什么是 spring boot? SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring ...

  7. 前端框架之vue初步学习

    Vue.js介绍: Vue.js是一个构建数据驱动的web界面的渐进式框架.Vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件.它不仅易于上手,还便于与第三方库或既有项目整合 ...

  8. Javascript基本数据认识

    1.Js的组成 2.Js的三种引入 行内式 <input type="button" value="来嘛来嘛" onclick="alert(' ...

  9. python123期末四题编程题 -无空隙回声输出-文件关键行数-字典翻转输出-《沉默的羔羊》之最多单词

    1. 无空隙回声输出 描述 获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出. ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬ ...

  10. Struts+Servlet+JDBC网上手机销售系统

    项目描述 Hi,大家好,今天给大家分享一个<网上手机销售系统>.本系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是 ...