如上篇文章提到,如果出现了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. 还不会使用Java ThreadLocal落后了吧!

    Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量.因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread ...

  2. Excel数据分析 --数据透析表

    数据透析表主要用于各种数据总汇,对各项数据指标进行分类统计 实例分析 如下所示:是一份销售流水数据,有时间,地区,销售员,商品名称,数量,单价和金额几个字段,如下所示: 现在针对不同的数据汇总需求,可 ...

  3. 数据中台实战(一):以B2B电商亿订为例,谈谈产品经理视角下的数据埋点

    本文以B2B电商产品“亿订”为实例,与大家一同谈谈数据中台的数据埋点. 笔者所在公司为富力环球商品贸易港,是富力集团旗下汇聚原创设计师品牌及时尚买手/采购商两大社群,通过亿订B2B电商.RFSHOWR ...

  4. wordpress个人常用标签调用

    wordpress常见标签调用,老是容易忘记,又要找半天,干脆搬到网站上. <?php bloginfo('name');?>网站名称 url <?php echo home_url ...

  5. 移动web开发之布局

    移动web开发流式布局 1.0 移动端基础 1.1浏览器现状 PC端常见浏览器:360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器:UC浏览器,Q ...

  6. webpack(从上篇博客中拿出来的)

    插件配置: emmet: vscode内置了这个,但是没有开启,要在设置里面"emmet.triggerExpansionOnTab": true, vscoed-icons插件: ...

  7. k8s设置pod运行完自动删除

    本环境apiserver.controller还要scheduler都是以pod的形式运行的,修改/etc/kubernetes/manifests下面对应的三个.yaml静态文件,加入 - --fe ...

  8. 用 Java 拿下 HTML 分分钟写个小爬虫

    本文适合有 Java 基础知识的人群 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款开源 Java 版一款网页元素解析框架- ...

  9. 文件属性及find命令总结

    第1章   文件属性 1.1   文件的属性 1.1.1    查看文件的详细属性       PS:ls查看的文件或目录默认的是按照名字的第一个字母进行正序排序       ls 参数选项: -t ...

  10. Deep Env

    https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ Ready Ubuntu 18.04 这里直接wsl Ubuntu 的软件源配置文件是 /etc/ap ...