电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

使用插件pg_repack解决PG数据库表和索引膨胀问题

来源:金蝶云社区作者:金蝶2024-09-233

使用插件pg_repack解决PG数据库表和索引膨胀问题

一 pg_repack简介 

PostgreSQL数据库通过数据多版本实现MVCC,删除数据并不会真正删除数据,而是修改标识。更新是通过删除+插入的方式进行。所以在频繁更新的系统,如果不进行处理,数据膨胀倍数可能达到十几倍。

PostgreSQL数据库支持通过插件pg_repack在线清理表空间,有效解决因对全表大量更新等操作引起的表膨胀问题,pg_repack无需获取排它锁,相比CLUSTER或VACUUM FULL更加轻量化。

pg_repack是一个可以在线重建表和索引的扩展,它会在数据库中创建一个和需要清理的目标表一样的临时表,将目标表中的数据COPY到临时表并在临时表上建立和目标表一样的索引,然后通过重命名的方式用临时表替换目标表。

二 pg_repack部署

$ wget https://api.pgxn.org/dist/pg_repack/1.4.6/pg_repack-1.4.6.zip

pg_repack 1.4.6添加了对 PostgreSQL 13 的支持,在 9.4 之前放弃对 PostgreSQL 的支持.

$ unzip pg_repack-1.4.6.zip

$ cd pg_repack-1.4.6

[root@localhost ~]# yum -y install openssl openssl-devel

[root@localhost ~]# yum -y install readline-devel.x86_64

$ make && make install



/var/postgresql/soft/pg12.8/bin/pg_repack



三 pg_repack配置

扩展pg_repack

postgres=# create extension pg_repack;

kingdee=# create extension pgstattuple;



四 pg_repack示例

大表做repack操作 



$ pg_repack -p 5432 -d kingdee --no-order --table large_test




在经过repack后,物理文件的名字更改了,大小也变为了115MB,刚才那些被废弃的行空间也已经释放给了系统。

表的占用空间变小了,访问

使用插件pg_repack解决PG数据库表和索引膨胀问题

一 pg_repack简介 PostgreSQL数据库通过数据多版本实现MVCC,删除数据并不会真正删除数据,而是修改标识。更新是通过删除+插入的方式进行。...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信