• Postgresql垃圾回收Vacuum优化手册


    1 Vacuum启动频率太低

    参数建议
    autovacuum_vacuum_scale_factor当update,delete的tuples数量超过 autovacuum_vacuum_scale_factor * table_size + autovacuum_vacuum_threshold 时,进行vacuum;对大量删除、更新的表可以适当降低这个值。
    autovacuum_vacuum_threshold同上配合使用。
    autovacuum_naptimelauncher会分配到每个DB上,如果有两个db配置1min,launcher会30s拉起一个worker。

    2 Vacuum单次太慢

    为什么慢分析:https://www.postgresql.org/docs/14/progress-reporting.html#VACUUM-PROGRESS-REPORTING

    参数建议
    autovacuum_vacuum_cost_delay结合下面的参数使用,可以配0不休眠
    autovacuum_vacuum_cost_limitvacuum干活会积累work point,超过autovacuum_vacuum_cost_limit后,开始休眠autovacuum_vacuum_cost_delay
    autovacuum_max_workers看CPU负载适当增加
    shared_buffers增加缓存间接增加vacuum速度
    autovacuum_work_mem单次可以处理更多的dead tuple
    maintenance_work_mem单次可以处理更多的dead tuple
    max_parallel_maintenance_workers执行Vacuum DDL时可以并发

    3 Vacuum没有效果

    参数Recommendation建议
    statement_timeout避免长事务
    idle_in_transaction_session_timeout避免空闲长事务
    log_min_duration_statement记录长事务
    hot_standby_feedback打开后,备库的长事务查询会一直阻塞主库的清理动作
    vacuum_defer_cleanup_age保留了太多的事务,可以适当减小
    复制槽卡回收位置复制槽一直在无法清理:pg_replication_slots
    二两阶段事务卡回收位置一阶段提交的时候一直没有二阶段提交:pg_prepared_xacts
  • 相关阅读:
    SpringBoot自带模板引擎Thymeleaf使用详解②
    PCB layout 小功率板子减小干扰方法
    Springboot中的三层架构
    HTTP 及三次握手,四次挥手
    SQL-Labs46关order by注入姿势
    【算法】删除有序数组中的重复项
    订单超时自动取消3种方案——我们用这种!
    C语言学习概览(三)
    pacp格式文件分析
    SDL 如何显示图片及背景图片
  • 原文地址:https://blog.csdn.net/jackgo73/article/details/128082630