企业展示型网站程序,wordpress 维护页面,免费可信网站认证,wordpress侧边栏 代码PostgreSQL的扩展#xff08;extensions#xff09;-常用的扩展之pg_repack
pg_repack 是一款非常有用的 PostgreSQL 扩展工具#xff0c;它能够重新打包#xff08;repack#xff09;表和索引以回收空间并减少碎片#xff0c;而且在这个过程中不会锁定表#xff0c;允…PostgreSQL的扩展extensions-常用的扩展之pg_repack
pg_repack 是一款非常有用的 PostgreSQL 扩展工具它能够重新打包repack表和索引以回收空间并减少碎片而且在这个过程中不会锁定表允许数据库在重整过程中继续对数据进行读写操作。这是与 PostgreSQL 内建的 VACUUM FULL 命令相比的一个重大优势因为 VACUUM FULL 在重新组织表以回收空间时会锁定表。
特性
最小化锁定时间pg_repack在重组表和索引的时候减少了锁的使用时间使得数据库对于读写操作几乎总是可用的。重新打包表和索引不仅可以对表进行重新打包还可以重新打包索引减少索引碎片。兼容性支持多个 PostgreSQL 版本。
安装 pg_repack
要使用 pg_repack你需要先在你的 PostgreSQL 服务器上安装它。安装方法可能因操作系统而异。以下是一些常见的安装方法 Debian/Ubuntu sudo apt-get install postgresql-XX-repack其中 XX 是 PostgreSQL 的版本号例如 12、13 等。 RHEL/CentOS 首先你需要启用 PostgreSQL 官方仓库然后安装 pg_repack。例如对于 PostgreSQL 12 sudo yum install pg_repack12从源代码安装 如果你的系统没有预打包的 pg_repack 版本你可以从源代码编译安装。 下载网址https://pgxn.org/dist/pg_repack/
–编译安装 cd /home/pg16/resource [pg16test resource]$ unzip pg_repack-1.5.0.zip [pg16test resource]$ cd pg_repack-1.5.0/ [pg16test pg_repack-1.5.0]$ make [pg16test pg_repack-1.5.0]$ make install 当你安装好 pg_repack 后需要在目标数据库上创建扩展
[pg16test pg_repack-1.5.0]$ psql -p 5777
psql (16.2)
Type help for help.postgres# CREATE EXTENSION pg_repack;
CREATE EXTENSION
postgres# SELECT * FROM pg_extension;oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
--------------------------------------------------------------------------------------------------------14270 | plpgsql | 10 | 11 | f | 1.0 | | 16423 | pg_stat_statements | 10 | 2200 | t | 1.10 | | 16454 | pg_repack | 10 | 2200 | f | 1.5.0 | |
(3 rows)使用 pg_repack
在安装并配置 pg_repack 之后你可以通过命令行工具 pg_repack 来重新组织表和索引。以下是一些基本用法 重新打包特定表 pg_repack -d databasename -t tablename重新打包所有表 pg_repack -d databasename重新打包特定索引 pg_repack -d databasename --only-indexes -t tablename请记得使用 pg_repack 之前确保你已经有了足够的权限来执行这些操作并且对数据库做了适当的备份。
注意事项
在 pg_repack 运行期间尽管它最小化了锁的时间但在最后阶段仍然需要短暂的锁定以便完成表的替换。因此最好在数据库负载相对较低的时间段运行它。确保在执行大量数据重组之前备份数据库以免出现不可预测的情况导致数据丢失。