pg_repack使用
可参考官方文档:
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的实现原理如下:
- 创建日志表记录对原表的变更。
- 在原表创建触发器,将原表的INSERT/UPDATE/DELETE操作记录到日志表中。
- 创建新表,与原表的行列相同。
- 在新表中创建索引。
- 将日志表里的变更应用到新表。
- 在system catalog交换新旧表。
- 删除旧表。
说明 pg_repack会在第1、2步和第6、7步短暂持有ACCESS
EXCLUSIVE锁。其余步骤pg_repack只需要持有原表的ACCESS SHARE锁,不影响原表的INSERT/UPDATE/DELETE。
- 对表中索引进行repack的实现原理如下:
- 以CONCURRENTLY方式创建新索引。
- 在system catalog交换新旧索引。
- 删除旧索引。
使用插件
开启插件。
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使用相关推荐
- PostgreSQL空间回收利器——pg_repack
PostgreSQL的表或索引发生膨胀后,我们可以使用vacuum full的方式来重建表以回收磁盘空间.但是vacuum full需要持有排它锁,会堵塞读操作. 因此一般在生产系统中使用vacuum ...
- 使用pg_repack实现在线vacuum
Postgresql通过数据多版本实现mvcc,删除数据并不会真正删除数据,而是修改标识,更新是通过删除+插入的方式进行,所以在频繁更新的系统,数据膨胀是个头疼的问题,如果不进行处理,数据膨胀倍数可能 ...
- pg_repack --no-order 某个表的过程分析
pg_repack 某个表 $ pg_repack --wait-timeout 3600 --no-order --table public.tmp_t0 -d peiybdb --echo 分析日 ...
- pg_repack 处理表和索引的膨胀
os: ubuntu 16.04 db: postgresql 9.6.8 pg_repack: 1.4.4 postgresql 的 vacuum full 需要 access exclusive ...
- 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 ...
- pg_repack插件安装使用
pg_repack插件安装使用 获取代码 在 这个链接里 可以选择需要下载的pg_repack版本 wget http://api.pgxn.org/dist/pg_repack/1.4.4/pg_r ...
- postgres数据库表空间收缩之pg_squeeze,pg_repack
#数据库表空间收缩之pg_squeeze,pg_repack 文章目录 pg_squeeze1.2 原理 优点 安装 使用 pgstattuple 临时处理 监控方式 注意事项 squeeze1.2和 ...
- pg_repack bloat 处理测试初步
一.软件安装 1.软件需求: postgresql-9.5.2.tar.gz pg_repack-1.3.4.zip 2.安装pg_repack [root@localhost pg_repack-1 ...
- 编译 pg_repack
编译 pg_repack 以 基于 postgres 12 编译 pg_repack 为例 参考https://reorg.github.io/pg_repack/ 最好使用比较新的GCC来编译 需要 ...
最新文章
- 【Python】百度贴吧图片的爬虫实现(努力努力再努力)
- 看图说话:OpenGL模型矩阵和投影矩阵
- linux动态链接库---一篇讲尽
- 通过图书编号查询python_文字版图书管理-python练习
- 没有回家的等于没过年
- EF Code First 简单的示例
- Node.js 应用故障排查手册 —— 大纲与常规问题指标简介
- python连接influxdb_python 访问 InfluxDB 数据库
- bootstrap-导航菜单
- 常用数据库学习资源站点
- 《王者荣耀》强制实名;联想打脸雷军;HTC 拍 VR 版《笑傲江湖》| 极客头条
- BAT及各大互联网公司2014前端笔试面试题:JavaScript篇
- isis安装指南(Liunx版本)+ ASP
- 条件概率公式图解推导
- PP报工确认bapi:BAPI_PRODORDCONF_CREATE_TT
- 3.3 伴随矩阵法求逆矩阵
- c++ sort 转载
- 4K Video Downloader (4K视频下载器)V3.0.40
- 数据恢复工具有哪些? 十个最好的数据恢复软件
- 我在印尼工作的日子-工作餐食