可参考官方文档:
https://reorg.github.io/pg_repack/?spm=a2c63.p38356.879954.3.6d6d15b3rdFspH

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

注意事项:
  • pg_repack需要额外的存储空间。全表repack时,剩余存储空间大小需要至少是待repack表大小的2倍。
  • pg_repack无法操作临时表。
  • pg_repack无法操作GiST索引。
  • pg_repack运行时无法对repack操作中的表执行DDL。pg_repack会持有ACCESS SHARE锁,禁止DDL执行。
功能介绍

pg_repack插件支持全表repack和索引repack。

  • 对整表数据进行repack的实现原理如下:
  1. 创建日志表记录对原表的变更。
  2. 在原表创建触发器,将原表的INSERT/UPDATE/DELETE操作记录到日志表中。
  3. 创建新表,与原表的行列相同。
  4. 在新表中创建索引。
  5. 将日志表里的变更应用到新表。
  6. 在system catalog交换新旧表。
  7. 删除旧表。

说明 pg_repack会在第1、2步和第6、7步短暂持有ACCESS
EXCLUSIVE锁。其余步骤pg_repack只需要持有原表的ACCESS SHARE锁,不影响原表的INSERT/UPDATE/DELETE。

  • 对表中索引进行repack的实现原理如下:
  1. 以CONCURRENTLY方式创建新索引。
  2. 在system catalog交换新旧索引。
  3. 删除旧索引。
使用插件

开启插件。

CREATE EXTENSION pg_repack;

关闭插件。

DROP EXTENSION pg_repack;

对数据库test中所有表执行repack操作。

pg_repack test

对数据库test中的表foo和表bar执行repack操作。

pg_repack --no-order --table foo --table bar test

将数据库test中的表foo所有索引移动到表空间tbs。

pg_repack -d test --table foo --only-indexes --tablespace tbs

将数据库中指定的索引移动到表空间tbs。

pg_repack -d test --index idx --tablespace tbs

pg_repack使用相关推荐

  1. PostgreSQL空间回收利器——pg_repack

    PostgreSQL的表或索引发生膨胀后,我们可以使用vacuum full的方式来重建表以回收磁盘空间.但是vacuum full需要持有排它锁,会堵塞读操作. 因此一般在生产系统中使用vacuum ...

  2. 使用pg_repack实现在线vacuum

    Postgresql通过数据多版本实现mvcc,删除数据并不会真正删除数据,而是修改标识,更新是通过删除+插入的方式进行,所以在频繁更新的系统,数据膨胀是个头疼的问题,如果不进行处理,数据膨胀倍数可能 ...

  3. pg_repack --no-order 某个表的过程分析

    pg_repack 某个表 $ pg_repack --wait-timeout 3600 --no-order --table public.tmp_t0 -d peiybdb --echo 分析日 ...

  4. pg_repack 处理表和索引的膨胀

    os: ubuntu 16.04 db: postgresql 9.6.8 pg_repack: 1.4.4 postgresql 的 vacuum full 需要 access exclusive ...

  5. postgresql垃圾清理插件pg_repack

    pg_repack插件部署: wget http://api.pgxn.org/dist/pg_repack/1.4.5/pg_repack-1.4.5.zip source /home/postgr ...

  6. pg_repack插件安装使用

    pg_repack插件安装使用 获取代码 在 这个链接里 可以选择需要下载的pg_repack版本 wget http://api.pgxn.org/dist/pg_repack/1.4.4/pg_r ...

  7. postgres数据库表空间收缩之pg_squeeze,pg_repack

    #数据库表空间收缩之pg_squeeze,pg_repack 文章目录 pg_squeeze1.2 原理 优点 安装 使用 pgstattuple 临时处理 监控方式 注意事项 squeeze1.2和 ...

  8. pg_repack bloat 处理测试初步

    一.软件安装 1.软件需求: postgresql-9.5.2.tar.gz pg_repack-1.3.4.zip 2.安装pg_repack [root@localhost pg_repack-1 ...

  9. 编译 pg_repack

    编译 pg_repack 以 基于 postgres 12 编译 pg_repack 为例 参考https://reorg.github.io/pg_repack/ 最好使用比较新的GCC来编译 需要 ...

最新文章

  1. 【Python】百度贴吧图片的爬虫实现(努力努力再努力)
  2. 看图说话:OpenGL模型矩阵和投影矩阵
  3. linux动态链接库---一篇讲尽
  4. 通过图书编号查询python_文字版图书管理-python练习
  5. 没有回家的等于没过年
  6. EF Code First 简单的示例
  7. Node.js 应用故障排查手册 —— 大纲与常规问题指标简介
  8. python连接influxdb_python 访问 InfluxDB 数据库
  9. bootstrap-导航菜单
  10. 常用数据库学习资源站点
  11. 《王者荣耀》强制实名;联想打脸雷军;HTC 拍 VR 版《笑傲江湖》| 极客头条
  12. BAT及各大互联网公司2014前端笔试面试题:JavaScript篇
  13. isis安装指南(Liunx版本)+ ASP
  14. 条件概率公式图解推导
  15. PP报工确认bapi:BAPI_PRODORDCONF_CREATE_TT
  16. 3.3 伴随矩阵法求逆矩阵
  17. c++ sort 转载
  18. 4K Video Downloader (4K视频下载器)V3.0.40
  19. 数据恢复工具有哪些? 十个最好的数据恢复软件
  20. 我在印尼工作的日子-工作餐食

热门文章

  1. 2022-05-08 基于卷积神经网络ResNet的车型识别(实验)
  2. 电脑突然上不了网,而且ping网关可以通
  3. linux 安装qt mysql库_Linux下QT平台Mysql数据库开发环境配置
  4. 去掉Eslint语法检测
  5. mysql数据库教程级联_Mysql实现级联操作(级联更新、级联删除)
  6. 为什么射极输出器的输入电阻跟负载R(L)有关?
  7. excel 隔行插入和错位
  8. startx 启动的过程
  9. el-tree处理大量数据
  10. mysql快速复制数据库