zoukankan      html  css  js  c++  java
  • PG-Vacuum

    1. vacuum机制

        在PG中,通过数据的多版本来实现MVCC。当变更数据,重建索引等操作时,PG内部是通过将旧版本数据标记为无效,新数据写入日志文件,成功后把新数据写入磁盘。该过程不会立刻释放占用的空间,这将会引起数据膨胀。因此,在PG中引入vacuum机制来清理旧数据和旧的事务。VACUUM会消耗I/O资源,可能引起其它活动会话性能变差。


    2. VACUUM类型

    1)Full VACUUM: 排他锁表,并对表进行完全清理;

    2) Lazy VACUUM: 标记无效数据空间为。


    3. VACUUM参数

    1) autovacuum=on 默认打开自动垃圾回收
    2) log_autovacuum_min_duration 默认-1,设置为0会记录所有vacuum行为,大于0的话,记录运行超过这个时间的vacuum,单位毫秒
    3) autovacuum_max_workers vacuum同时运行的进程数量默认3
    4) autovacuum_naptime vacuum每次运行的时间间隔,默认为1分钟
    5) autovacuum_vacuum_threshold autovacuum_vacuum_scale_factor 默认50,0.2,只有表内行数据update/delete超过autovacuum_vacuum_threshold autovacuum_vacuum_scale_factor*table row num之后,才会触发vacuum
    6) autovacuum_analyze_threshold autovacuum_analyze_scale_factor 默认50,0.1,数据修改量超过 autovacuum_analyze_threshold+autovacuum_analyze_scale_factor*table row num 默之后,才会触发vacuum的表分析
    7) autovacuum_freeze_max_age autovacuum_multixact_freeze_max_age触发强制freeze的事务时间点 默认2亿与4亿 题外说一下,对于数据库里面的表,不会等到到达这个限制之后才去freeze,默认情况下,在autovacuum_freeze_max_age*0.95的事务数量时候,就会开始冻结操作,也可以通过vacuum_freeze_table_age(表级别粒度)参数控制
    8) vacuum_freeze_min_age 参数,如果表的这个参数设置了,每次vacuum时候,行事务id大于这个数字的时候,都会被设置freeze
    9) autovacuum_vacuum_cost_limit 与 autovacuum_vacuum_cost_delay 当vacuum操作的cost超过limit,则把vacuum延后指定的时间.cost来源是vacuum_cost_limit参数默认200,

  • 相关阅读:
    SED{shell三剑客awk,sed,grep}
    AWK{shell三剑客awk,sed,grep}
    面试汇总
    shell脚本
    redis主从
    haproxy
    grafana
    zabbix
    lnmp
    shell 基础
  • 原文地址:https://www.cnblogs.com/binliubiao/p/12654686.html
Copyright © 2011-2022 走看看