【转】postgreSQL之autovacuum性能问题分析(二)
如上篇文章提到,如果出现了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性能问题分析(二)的更多相关文章
- 【转】postgreSQL之autovacuum性能问题分析(一)
最近笔者在项目中遇到postgreSQL的性能问题,所以计划在公众号里写一个系列文章去追踪记录这些问题以及分析过程或解决方法. 本文主要是关于postgreSQL的autovacuum的问题.可能很多 ...
- TVM性能评估分析(二)
TVM性能评估分析(二) Figure 1. A bird's eye view of the µTVM + AutoTVM infrastructure Figure 2. A standard ...
- Linux性能监控分析命令(二)—sar命令介绍
性能监控分析的命令包括如下: 1.vmstat 2.sar 3.iostat 4.top 5.free 6.uptime 7.netstat 8.ps 9.strace 10.lsof ======= ...
- 【性能测试】常见的性能问题分析思路(二)案例&技巧
上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- SQLite入门与分析(二)---设计与概念(续)
SQLite入门与分析(二)---设计与概念(续) 写在前面:本节讨论事务,事务是DBMS最核心的技术之一.在计算机科学史上,有三位科学家因在数据库领域的成就而获ACM图灵奖,而其中之一Jim G ...
- list 、set 、map 粗浅性能对比分析
list .set .map 粗浅性能对比分析 不知道有多少同学和我一样,工作五年了还没有仔细看过list.set的源码,一直停留在老师教导的:"LinkedList插入性能比Array ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- Android App性能评测分析-流畅度篇
1.前言 在手机App竞争越来越激烈的今天,Android App的各项性能特别是流畅度不如IOS,安卓基于java虚拟机运行,触控响应的延迟和卡顿比IOS系统严重得多.一些下拉上滑.双指缩放快速打字 ...
随机推荐
- linux命令查询网站
http://linux.51yip.com/ http://man.linuxde.net/ Linux命令查询手册Linux终端下 esc + . 可以获取上次文件名
- Golang bytes.buffer详解
原文:https://www.jianshu.com/p/e53083132a25 Buffer 介绍 Buffer 是 bytes 包中的一个 type Buffer struct{…} A buf ...
- BIGI行情-实时行情数据源接口websocket接入方法
BIGI行情-实时行情数据源接口socket接入方法1.国际期货.国内期货.外汇.贵金属.现货.期权.股指.数字货币和A股实时行情和历史行情2.推送的有:socket,websocket,http接收 ...
- Django万能权限框架组件
业务场景分析 假设我们在开发一个培训机构的 客户关系管理系统,系统分客户管理.学员管理.教学管理3个大模块,每个模块大体功能如下 客户管理 销售人员可以录入客户信息,对客户进行跟踪,为客户办理报名手续 ...
- CentOS基础操作
一.修改IP地址 vim ../etc/sysconfig/network-scripts/ifcfg-ens33 在文件中修改或添加以下内容 TYPE=Ethernet PROXY_METHOD= ...
- 仓库ERP管理系统(springboot)
查看更多系统:系统大全,课程设计.毕业设计,请点击这里查看 01 系统概述 基于SpringBoot框架和SaaS模式,非常好用的ERP软件,目前专注进销存+财务功能.主要模块有零售管理.采购管理.销 ...
- SEO大神都是些什么人
http://www.wocaoseo.com/thread-97-1-1.html 貌似好久没有更新seo培训联盟的文章了,最近一直在专心学习其他的东西,前一段写了几篇关于用户需求和体验的文章,但是 ...
- java开发,入职半年,对未来迷茫,如何发展?
分享-更多精彩图片尽在大师助手 个人建议,在JAVA方面,先学好JAVA SE.不管如何,基础才是上层建筑的一切.推荐去看jdk源码,推荐1.6或者1.7版本.因为1.8版本的源码中会有很多lambd ...
- java里equals和hashCode之间什么关系
如果要比较实际内存中的内容,那就要用equals方法,但是!!! 如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而objec ...
- 路由策略Routing Policy和策略路由PBR的区别
这是面试的时候问道的一个问题,这里跟大家分享一下 路由策略(Routing Policy)是为了改变网络流量所经过的途径而修改路由信息的技术: PBR(policy-based-route)是一种依据 ...