详情页标题前

阿里云RDS数据库清理表空间(pg_repack)-云淘科技

详情页1

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执行。

  • 重建表和索引时会占用较多的磁盘IO,使用时请提前评估是否影响业务。以ESSD PL1云盘为例,repack 100GB的表时,会达到IO吞吐上限(250MB/s)。

功能介绍

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

  • 对整表数据进行repack的实现原理如下:

    1. 创建日志表记录对原表的变更。

    2. 在原表创建触发器,将原表的INSERT、UPDATE和DELETE操作记录到日志表中。

    3. 创建新表,与原表的行列相同。

    4. 在新表中创建索引。

    5. 将日志表里的变更应用到新表。

    6. 在system catalog交换新旧表。

    7. 删除旧表。

    说明

    pg_repack会在第a、b步和第f、g步短暂持有ACCESS EXCLUSIVE锁。其余步骤pg_repack只需要持有原表的ACCESS SHARE锁,不影响原表的INSERT、UPDATE和DELETE。

  • 对表中索引进行repack的实现原理如下:

    1. 以CONCURRENTLY方式创建新索引。

    2. 在system catalog交换新旧索引。

    3. 删除旧索引。

插件开启与关闭

说明

请使用高权限账号执行如下命令。

  • 开启插件。

    CREATE EXTENSION pg_repack;
  • 关闭插件。

    DROP EXTENSION pg_repack;

安装客户端

pg_repack插件需要配合客户端使用,以ECS Alibaba Cloud Linux 3.2104及以上版本为例,参考以下命令:

  1. 安装环境依赖。

    sudo yum install postgresql* redhat-rpm-config libpq* openssl-devel readline-devel -y
  2. 添加环境变量。

    export PATH=$PATH:/usr/lib64/pgsql/postgresql-12/bin
  3. 下载pg_repack客户端并编译安装。

    wget https://github.com/reorg/pg_repack/archive/refs/tags/ver_1.4.6.tar.gz
    tar zxvf ver_1.4.6.tar.gz
    cd pg_repack-ver_1.4.6
    make && make install

使用示例

-- 检查但不执行:--dry-run
pg_repack --dry-run --no-superuser-check --echo --no-order -h 连接串 -p 端口 -d database1 -U user --table schema1.table1

-- 检查并执行
pg_repack  --no-superuser-check --echo --no-order -h 连接串 -p 端口 -d database1 -U user --table schema1.table1

常见问题

Q:报错“ERROR: pg_repack failed with error: You must be a superuser to use pg_repack”。

A:请使用-k或–no-superuser-check,避免没有权限。

重要

全表repack时,无法通过此方式拥有权限。

相关参考

pg_repack的详细说明可参考pg_repack官方帮助文档。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/156103.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云容器服务ACK配置ACR企业版免密-云淘科技

    使用阿里云镜像服务ACR来拉取镜像时,可以配置免密来简化配置,加速镜像拉取。本文为您介绍如何配置免密拉取ACR企业版镜像。 前提条件 请确保您已完成以下操作: 已开通容器镜像服务ACR服务,并完成了相关的RAM角色授权。 已创建ACR企业版实例并完成镜像仓库相关配置。具体操作,请参见使用企业版实例推送拉取镜像。 背景信息 阿里云容器镜像服务ACR分为个人版和…

    2023年12月10日
  • 阿里云RDS数据库化学分子计算检索(RDKit)-云淘科技

    RDS PostgreSQL提供RDKit插件,支持化学分子计算、化学分子检索等功能。 前提条件 实例版本为RDS PostgreSQL 12。 背景信息 RDKit插件支持mol数据类型(描述分子类型)和fp数据类型(描述分子指纹),在此基础上支持比较运算、相似度计算(Tanimoto、Dice)和GiST索引。 更多RDKit插件SQL操作请参见RDKi…

    阿里云数据库 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云云原生大数据计算服务 MaxComputePyODPS DataFrame的代码运行环境-云淘科技

    使用PyODPS DataFrame编写数据应用时,同一个脚本文件中的代码会在不同位置执行,可能导致一些无法预期的问题,本文为您介绍当出现相关问题时,如何确定代码的执行环境,以及提供部分场景下的解决方案。 概述 PyODPS是一个Python包而非Python Implementation,其运行环境均为未经修改的Python,因而并不会出现与正常Pytho…

    2023年12月10日
  • 阿里云对象存储OSSiOS简单下载-云淘科技

    本文档介绍如何进行简单下载。 示例代码 下载文件时,您可以指定下载为本地文件或者下载为NSData。 OSSGetObjectRequest * request = [OSSGetObjectRequest new]; // 填写Bucket名称,例如examplebucket。 request.bucketName = @”examplebucket”; …

    阿里云对象存储 2023年12月10日
  • 阿里云容器服务ACK最佳实践-云淘科技

    本文为您介绍使用托管版与专有版容器集群ACK时不同场景下的最佳实践。 分类 相关文档 授权 授权最佳实践 集群 ECS选型推荐配置 高可靠推荐配置 Kubernetes集群网络规划 ACK Pro大规模集群使用建议 提升ACK专有集群的etcd存储容量上限 容器跨可用区高可用 Linux图形应用最佳实践 Unity远程渲染最佳实践 节点与节点池 节点池部署集…

    阿里云容器服务 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。