清空数据 清理_postgresql数据膨胀优化方案
2021/7/11 19:11:22
本文主要是介绍清空数据 清理_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
这篇关于清空数据 清理_postgresql数据膨胀优化方案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-05快速清空 PostgreSQL 数据库中的所有表格,让你的数据库重新焕然一新!
- 2024-01-04在PostgreSQL中创建角色:判断角色是否存在并创建
- 2023-05-16PostgreSQL一站式插件推荐 -- pg_enterprise_views
- 2022-11-22PostgreSQL 实时位置跟踪
- 2022-11-22如何将PostgreSQL插件移植到openGauss
- 2022-11-11PostgreSQL:修改数据库用户的密码
- 2022-11-06Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务
- 2022-10-27Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务
- 2022-10-11PostgreSql安装(Windows10版本)
- 2022-09-13PostgreSQL-Network Address类型操作和函数