• 清空数据 清理_postgresql数据膨胀优化方案


    由于pg的MVCC的实现机制与oracle存在较大差异,pg的undo空间和数据空间共用,导致数据空间膨胀严重,长时间不清理这种膨胀的垃圾数据,导致sql性能下降非常严重。

    常规,数据库级调整

    常规调整

    对于频繁更新的表,设置填充因子fillfactor
    语法:

    若是分区表,需在分区子表设置。

    alter table table_xx set (fillfactor=80);

    功能:

    让每个数据块预留一定的空间用于记录的更新,也可以提升update的效率。

    缺点:

    Insert效率有所降低,同时加大磁盘开销。

    对于超大表,调低vacuum触发阈值
    语法:

    若是分区表,需在分区子表设置。

    alter table table_xx set (autovacuum_vacuum_threshold=100);

    alter table table_xx set (autovacuum_vacuum_scale_factor =0.001);

    功能:

    使超大表更积极触发vacuum机制。

    定时任务,通过工具周期性维护
    推荐2款工具,均为开源软件,建议通过定时任务在业务闲时,每周维护一次。

    以下为2款工具的详细对比数据:


    垃圾数据回收工具对比

    从工具稳定性和易维护角度,推荐使用pg_repack。

    pg_repack

    wget https://github.com/reorg/pg_repack/archive/ver_1.4.5.zip

    make USE_PGXS=1

    make install USE_PGXS=1

    pg_squeeze

    git clone https://github.com/cybertec-postgresql/pg_squeeze.git

    make USE_PGXS=1

    make install USE_PGXS=1

    pgcompacttable

    github已经不维护,不建议使用

    pg_bloat_check

    该工具仅检测,无垃圾回收功能。且检测效率较低,不推荐。

    其他
    1.truncate 不会引起膨胀,delete 会引起膨胀。全表删除时,尽量使用truncate。比如全量数据同步的定时任务,第一步一般都是清空目标表,此时建议使用truncate清空。
    ————————————————
    版权声明:本文为CSDN博主「weixin_39915500」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_39915500/article/details/112593688

  • 相关阅读:
    Hadoop的多节点集群详细启动步骤(3或5节点)
    Hive的单节点集群详细启动步骤
    HDU-1039-Easier Done Than Said?(Java && 没用正則表達式是我的遗憾.....)
    Linux下套接字具体解释(三)----几种套接字I/O模型
    C++晋升之std中vector的实现原理(标准模板动态库中矢量的实现原理)
    POJ 1781 In Danger Joseph环 位运算解法
    sublime搜索和替换--正则
    quarze的工作原理
    CF437D(The Child and Zoo)最小生成树
    HDU2504 又见GCD
  • 原文地址:https://www.cnblogs.com/telwanggs/p/14998106.html
Copyright © 2020-2023  润新知