首页 > 其他分享 >pg_repack 工具安装及使用

pg_repack 工具安装及使用

时间:2023-11-17 14:01:11浏览次数:27  
标签:记录 repack 重整 索引 pg 新表 安装

它会为待重建的表创建一份副本。首先取一份全量快照,将所有活元组写入新表,并通过触发器将所有针对原表的变更同步至新表,最后通过重命名,使用新的紧实副本替换老表。而对于索引,则是通过PostgresQL的CREATE(DROP)INDEXCONCURRENTLY完成的。

1.pg_repack 工作原理

·创建一个记录表,用于记录原表中的记录的修改

·在原表上创建一个触发器,记录插入、更新、和删除操作到日志表

·创建一个新表,包含原表中的所有的记录

·在新表上创建索引

·将日志表中的变更应用到新表.

·使用system catalogs将原表和新表进行swap,包含索引和toast表(更新系统表system catalogs)格

·删除原先的表

2.使用pg_repack 的优点

· 大量删除记录后,从表中回收空闲空间给磁盘。

· 重新构建一个表,以重新排列记录,并将它们压缩/打包到更少的页。这可能会让查询的IO更少,性能更高。

· 从那些因为autovacuum设置不当,而导致过度膨胀的表中回收空闲空间。

· pg_repack是PostgreSQL的一个扩展,它可以帮助我们在线重建一个表。这类似于MySQL中用于在线表重建的pt-online-schema-change。然而,pg repack只适用于具有主键或NOT NULL唯一键的表。

3.使用pg_repack 注意点

·重整开始之前,最好取消掉所有正在进行的Vacuum任务。

·对索引做重整之前,最好能手动清理掉可能正在使用该索引的查询

·如果出现异常的情况(譬如中途强制退出),有可能会留下未清理的垃圾,需要手工清理。

·当完成重整,进行重命名替换时,会产生巨量的WAL,有可能会导致复制延迟,而且无法取消。

·重整特别大的表时,需要预留至少与该表及其索引相同大小的磁盘空间,需要特别小心,手动检查。

4.pg_repack 安装

下载网址:https://pgxn.org/dist/pg_repack/

上传并解压:

unzip pg_repack-1.4.8.zip

pg_repack 工具安装及使用_触发器

编译并安装

cd pg_repack-1.4.8

make 

make install

pg_repack 工具安装及使用_PostgreSQL_02

登录数据库添加扩展

create extension pg_repack;

pg_repack 工具安装及使用_PostgreSQL_03

查看已经安装的pg_repack

SELECT * FROM pg_available_extensions where name like 'pg_repack';

pg_repack 工具安装及使用_触发器_04

5.pg_repack 基本使用


标签:记录,repack,重整,索引,pg,新表,安装
From: https://blog.51cto.com/u_11103985/8442682

相关文章

  • 安装 IIS 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
    在windows中使用命令行方式安装IIS(Web服务器)WindowsServer2022安装IIS报错访问临时文件夹C:\WINDOWS\TEMP\3C读取/写入权限错误:0x80070005,可以使用命令行方式来安装和配置Web服务(IIS)。以下是使用DeploymentImageServicingandManagement(DISM)工具的步骤:1.打......
  • 移动硬盘安装Ubuntu
    说明​ 由于学业需要,自己需要一个Ubuntu系统,但不想在原本容量就不多的硬盘上再一次分区来制作双系统,同时如果使用虚拟机来达到双系统的目的也未尝不可。但在虚拟机上的系统调用到GPU的话,就不得不涉及到穿透的各项问题,由于自己人菜还懒,觉得这过于麻烦,不如直接制作一个外接的系统。......
  • pip生成与安装项目依赖包---提示:No such file or directory: 'requirement.txt'
    错误的原因:安装项目依赖包的文件命令: pipinstall-rrequirement.txt问题:ERROR:Couldnotopenrequirementsfile:[Errno2]Nosuchfileordirectory:'requirement.txt'解决:第一步,检查项目中是否存在文件“requirement.txt”,如果存在,则检查文件名与执行的文件名不一致......
  • php编译安装扩展
    1、linux下安装php的redis扩展wgethttps://codeload.github.com/edtechd/phpredis/zip/php7unzipphp7cdphpredis-php7phpize//如果不存在,就找phpize路径执行./configure--with-php-config=/usr/local/php/bin/php-config//php-config路径make&&make......
  • CentOS7安装强制使用gpt分区
    安装CentOS时,系统默认会使用mbr模式。如果磁盘大于2T,则需要如下操作,在开机启动画面按tab键,以便输入核心参数,在行末输入空格后inst.gpt,回车: 可以如下模式分区,其中根分区既可以是基本的xfs或者ext3,也可以是lvm格式: ......
  • Pycharm安装之后-简单配置
    简单配置,配置完成后,使用起来一点不简单。第一步,为.py文件添加头部信息路径:File->Setting->Editor->FileandCodeTemplates->PthonScript内容:#!/usr/bin/python3#coding=utf-8#@Time:${DATE}${TIME}#@Author:作者以上内容可以根据自己喜欢,自行调整第二步,常用插件1......
  • 无U盘双系统安装(Windows10安装Ubuntu)
    1,下载Ubuntu镜像 ubuntu,Windows镜像下载-Zcb0812-博客园(cnblogs.com)2,下载easyuefi 轻松管理EFI/UEFI启动项&管理EFI系统分区&修复EFI系统启动问题!-EasyUEFI3,Win10电脑新建分区(10G),类型选择FAT32,用于安装Ubuntu启动程序,并将第一步的镜像解压到此盘中4,使用easyu......
  • yum 只下载不安装
    yuminstall--downloadonly--downloaddir=./postgresql12-server 在使用yum包管理器时,可以通过添加--downloadonly参数来实现只下载软件包而不安装。要只下载软件包而不进行安装,可以使用以下命令:bash复制代码yuminstall--downloadonly<package_name>将<package......
  • 【QT最新2023年安装包下载及安装教程(超详细)】
    1、打开清华大学镜像网站:https://mirrors.tuna.tsinghua.edu.cn/qt/或者打开qt官网下载:http://www.qt.io/download不建议使用官网下载安装包,网速不稳定,下载较慢,此处讲解镜像网站下载步骤  2、下载完成后找到安装包双击打开--进入安装“登录”界面:输入邮箱和密码进行登录,没......
  • 二、RHEL8操作系统安装
     一、如何安装rhel的操作系统? 必要的前提条件:硬件(CPU、内存、硬盘……)+安装介质(操作系统的安装文件) 会不会把自己的笔记本装成rhel的操作系统呢?不会 使用虚拟机软件虚拟出一套虚拟的计算机硬件,然后将操作系统装在上面,Vmwareworkstation虚拟机软件 ......