环境:
1)redhat-release:CentOS Linux release 7.6.1810 (Core)
2)database version:postgresql 14.6
一、添加pgstattuple
pgcompacttable工具使用过程中需要依赖pgstattuple,因此需先添加pgstattuple。如果是源码安装的postgresql,则源码里包含了postgresql-contrib,因此,进行编译及安装即可。
--编译
cd /postgresql/soft/postgresql-14.6/contrib/pgstattuple
make
make install
本次实验没有编译也可以直接使用。
--在所需要使用的数据库里添加pgstattuple。
[postgres@tencent ~]$ psql -d testdb -Utest
psql (14.6)
Type "help" for help.
testdb=# select * from pg_available_extensions where name like 'pgstat%';
name | default_version | installed_version | comment
-------------+--------------+---------------+--------------------
pgstattuple | 1.5 | | show tuple-level statistics
(1 row)
testdb=#create extension pgstattuple;
CREATE EXTENSION
testdb=# select * from pg_available_extensions where name like 'pgstat%';
name | default_version | installed_version | comment
-------------+-----------------+-------------------+-----------------------------
pgstattuple | 1.5 | 1.5 | show tuple-level statistics
(1 row)
安装完成后,installed_version显示安装的版本
--查看pgstattuple可使用的函数
testdb=# \dxS+ pgstattuple
Objects in extension "pgstattuple"
Object description
---------------------------------------
function pg_relpages(regclass)
function pg_relpages(text)
function pgstatginindex(regclass)
function pgstathashindex(regclass)
function pgstatindex(regclass)
function pgstatindex(text)
function pgstattuple_approx(regclass)
function pgstattuple(regclass)
function pgstattuple(text)
(9 rows)
二、部署pgcompacttable
安装前需要安装pgstattuple插件,因为要基于该插件去查找膨胀的表,所以如果有大表的情况下,因为pgstattuple会扫全表,所以会比较耗时,这个在使用的时候一定要注意一下。
原理:
从表的头部填充新的行,在普通vacuum时候,截断表末尾的空page,达到收缩空间的效果。不需要占用额外的空间,使得表文件更加紧凑。而且不会加比较重的锁。对性能影响较小。

本文介绍了如何在CentOS7.6的PostgreSQL14.6环境中安装pgstattuple扩展,以及如何使用pgcompacttable工具进行表空间优化。首先详细步骤演示了pgstattuple的安装和使用,然后展示了pgcompacttable的部署和对大表的压缩过程。
最低0.47元/天 解锁文章
991

被折叠的 条评论
为什么被折叠?



