赞
踩
目录
VACUUM回收死元组占用的存储空间。在正常的PostgreSQL操作中,被更新删除或废弃的元组不会从它们的表中物理删除;它们一直存在,直到 VACUUM完成。因此有必要定期进行VACUUM,尤其是在频繁更新的表上。
通过插件pg_repack在线清理表空间,有效解决因对全表大量更新等操作引起的表膨胀问题。pg_repack无需获取排它锁,相比CLUSTER或VACUUM FULL更加轻量化。
pg_repack和VACUUM FULL都可以将释放的空间返回给操作系统,同样期间剩余空间要是被释放空间的两两倍。但pg_repack优势在于执行期间不影响原表的INSERT、UPDATE和DELETE。
进入需要pg_repack的数据库,执行插件的开启/关闭。
1.安装依赖环境-1
yum install postgresql* redhat-rpm-config openssl-devel readline-devel -y
2.安装依赖-libpgxx
踩坑:使用yum install libpq*安装依赖时,有可能libpqxx依赖的postgresql版本为默认的9.2。而后续安装pg_repack时会限制postgresql相关依赖版本过低,需要9.4以上。
所以安装时需要特别注意,如果yum安装时显示相关postgresql为9.4以上则可以使用yum安装,如果低于9.4则可以考虑rpm包安装(但是依赖巨多)。
2.1 rpm包安装libpqxx-5.0.1-1
(本文使用的postgresql-13,所以相关postgresql也保持一致选择的13对应版本)
rpm包下载:libpqxx-5.0.1-1.rhel7.1.x86-64.rpm以及相关依赖-Linux文档类资源-CSDN下载
也可以到pkgs.org搜索需要的rpm包:https://pkgs.org/
2.2 添加环境变量
echo "export PATH=\$PATH:/usr/pgsql-13/bin/" >> /etc/profile
3.安装pg_repack-1.4.6
- wget https://github.com/reorg/pg_repack/archive/refs/tags/ver_1.4.6.tar.gz
- tar zxvf ver_1.4.6.tar.gz
- cd pg_repack-ver_1.4.6
- make && make install
pg_repack --no-superuser-check --echo --no-order -h ip -p 5432 -d databasename -U username
pg_repack命令详细用法参考官方文档:
https://reorg.github.io/pg_repack/?spm=a2c4g.11186623.0.0.21eb41a26aBePG
postgresql 清理磁盘空间_cuisidong1997的博客-CSDN博客_postgres 清理这种形式的命令可以和表的普通读写操作并行,因为它不会获得一个排他锁。但是,这种形式中额外的空间并没有被还给操作系统(在大多数情况下),它仅仅被保留在同一个表中以备重用。VACUUM FULL将表的整个内容重写到一个新的磁盘文件中,并且不包含额外的空间,这使得没有被使用的空间被还给操作系统。这种形式的命令更慢并且在其被处理时要求在每个表上保持一个排他锁。postgresql 长期使用后会造成删除的历史记录占用磁盘空间未被清理,使用下面的方法可以完成清理工作:VACUUM FULL。...https://blog.csdn.net/cuisidong1997/article/details/126296392清理表空间(pg_repack)https://help.aliyun.com/document_detail/212985.htm?spm=a2c4g.11186623.0.0.72a537c5loNqXx#concept-2071228https://reorg.github.io/pg_repack/?spm=a2c4g.11186623.0.0.21eb41a2fwfogOhttps://reorg.github.io/pg_repack/?spm=a2c4g.11186623.0.0.21eb41a2fwfogO
PostgreSQL: Documentation: 13: VACUUMhttps://www.postgresql.org/docs/13/sql-vacuum.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。