Postgres 19 引入核心功能 REPACK,可在线重写膨胀表以回收空间,无需长时间锁定,支持并发模式。JIT 默认关闭以减少 OLTP 查询开销,查询规划器通过预聚合优化提升性能。其他改进包括 lz4 压缩、锁等待日志、并行自动清理等,预计 2026 年 9 月发布。
Git 的垃圾回收(git gc)用于整理仓库,主要功能包括重打包松散对象、删除过期的 reflog 和不可达对象。手动执行 gc 适用于松散对象增多或磁盘紧张的情况,执行后仓库体积可能减小,并更新对象信息。建议在低峰期进行,以减少对 CPU 和 IO 的占用。
PostgreSQL 19于4月8日功能冻结,社区专注于测试和修复。新版本将支持图数据库、提供pg_plan_advice工具以及无锁表膨胀处理的REPACK功能,预计在9月/10月发布,并将举行PGConf.EU大会。
Postgres 19引入了REPACK命令,解决了表膨胀问题,允许在不锁定整个表的情况下重写表。通过调整autovacuum设置,可以有效管理表的大小。REPACK命令支持并发执行,提升了性能,同时需注意MVCC安全性,为数据库管理员提供了优化工具。
PostgreSQL 19 brings REPACK CONCURRENTLY, a native alternative to pg_repack that rewrites tables without crippling locks.
For about fifteen years, the standard answer to “this table is bloated, what do I actually do about it” has been one of the out-of-tree options: pg_repack (the extension), pg_squeeze (Antonin...
PostgreSQL 19引入了REPACK的CONCURRENTLY选项,允许在不获取独占锁的情况下重组表。该功能通过共享更新锁创建初始副本,并利用并发后台工作者进行逻辑解码。尽管存在复制槽资源稀缺和死锁风险等问题,但设计和代码已基本完成,预计将在后续更新中解决。测试结果显示,重组后表大小显著减少,插入性能略有下降,但整体影响不大。
PostgreSQL 19的新特性REPACK通过重写表来物理压缩数据,类似于VACUUM,但创建新文件而非清理现有页面。REPACK CONCURRENTLY允许在操作期间保持表可用,使用快照复制并重放并发更改,确保逻辑身份不变,同时有效回收磁盘空间。
PostgreSQL 19引入了REPACK命令,整合了VACUUM FULL和CLUSTER的功能,简化了用户理解,同时保留了旧命令。REPACK支持重写表以回收磁盘空间,并提供新的进度视图pg_stat_progress_repack。尽管当前不支持并发模式,但未来可能会增加此功能。该命令使用简单,允许用户选择VERBOSE和ANALYZE等选项。
PostgreSQL引入了pg_repack扩展来解决表中的膨胀和碎片化问题。与VACUUM FULL不同,pg_repack允许在线重建表而无需锁定表。操作过程中,pg_repack创建日志表,添加触发器,创建影子表,构建索引,应用更改,交换表,并删除原始表。重要选项包括指定并行连接数,执行在线VACUUM FULL,设置等待超时和绕过超级用户验证。限制包括不能重新组织临时表或通过GiST索引对聚簇表进行重组。建议在低活动期间安排pg_repack,并避免过度使用。
As the database size increases and the number of transactions per second rise, you'll inevitably face the challenge of the table bloat. Although PostgreSQL assists as much as possible with its...
本文介绍了在PostgreSQL中重建表的方法,包括使用VACUUM FULL命令的限制,Oracle中使用DBMS_REDEFINITION包的手动步骤,以及PostgreSQL中的pg_repack扩展。pg_repack可以在不中断读写操作的情况下重建表,并有效去除碎片。使用pg_repack重建表简单且提高数据库性能和存储利用率。
完成下面两步后,将自动完成登录并继续当前操作。