新手入门指南:PostgreSQL的pg_repack基础知识

发表时间: 2023-08-09 11:37

PostgreSQL安装参考以下链接,此处不再赘述。

https://www.toutiao.com/article/7217608492167725583

一、基础介绍

1.1 概念

pg_repack是PostgreSQL的一个扩展,它可以帮助我们在线重建一个表。

pg_repack只适用于具有主键或NOT NULL唯一键的表。

1.2 使用场景

  • 大量删除记录后,从表中回收空闲空间给磁盘。
  • 重新构建一个表,以重新排列记录,并将它们压缩/打包到更少的页,这可能会让查询的IO更少,性能更高。
  • 从那些因为autovacuum设置不当,而导致过度膨胀的表中回收空闲空间。

1.3 语法介绍

pg_repack [option] [dbname]

选项

  • -a:重建所有库
  • -t:仅重建指定的表
  • -I:重建特定的父表及其继承者
  • -c:仅重建特定架构中的表
  • -s:将重建的表移动到新的表空间
  • -S:也将重建的索引移动到TBLSPC
  • -o:按列而不是按簇键排序
  • -n:使用vacuum替代集群
  • -N:打印将被重建的内容并退出
  • -j:对每个表使用多少并行作业
  • -i:仅移动指定的索引
  • -x:仅移动指定表的索引
  • -T:冲突时取消其它后端的超时
  • -D:超时时不要杀死其他后端
  • -Z:在最后不要分析
  • -k:跳过客户端中的超级用户检查
  • -C:不要重建属于特定扩展的表

connection options

  • -d:连接的数据库
  • -h:数据库服务器主机或套接字目录
  • -p:数据库服务器端口
  • -U:连接的用户名
  • -w:从不提示输入密码
  • -W:强制密码提示

二、安装使用

2.1 下载安装包

wget https://api.pgxn.org/dist/pg_repack/1.4.8/pg_repack-1.4.8.zip --no-check-certificate

2.2 解压缩安装包

unzip pg_repack-1.4.8.zip

2.3 设置环境变量

cd pg_repack-1.4.8/

export PATH=$PATH:/web/pgsql/bin/

2.4 编译安装

make && make install

2.5 删除pg_repack扩展

/web/pgsql/bin/psql -c "DROP EXTENSION pg_repack" -U postgres -d rsfw

2.6 加载pg_repack扩展

/web/pgsql/bin/psql -c "CREATE EXTENSION pg_repack" -U postgres -d lbox


2.7 用法

/web/pgsql/bin/pg_repack -U postgres -d lbox -j20 -t t_els_user_vbox_rel

看到这里,动动小手点个赞吧。