原文英文,约1000词,阅读约需4分钟。
📝
内容提要
PostgreSQL引入了pg_repack扩展来解决表中的膨胀和碎片化问题。与VACUUM FULL不同,pg_repack允许在线重建表而无需锁定表。操作过程中,pg_repack创建日志表,添加触发器,创建影子表,构建索引,应用更改,交换表,并删除原始表。重要选项包括指定并行连接数,执行在线VACUUM FULL,设置等待超时和绕过超级用户验证。限制包括不能重新组织临时表或通过GiST索引对聚簇表进行重组。建议在低活动期间安排pg_repack,并避免过度使用。
❓
Q&A
pg_repack扩展的主要功能是什么?
pg_repack扩展用于解决PostgreSQL表中的膨胀和碎片化问题,允许在线重建表而无需锁定表。
pg_repack与VACUUM FULL有什么区别?
pg_repack允许在线操作,不需要独占锁,而VACUUM FULL会锁定表,导致无法进行读写,可能造成服务中断。
使用pg_repack需要满足哪些条件?
使用pg_repack需要是超级用户,目标表必须有主键或唯一索引,并且需要双倍于目标表大小的可用磁盘空间。
pg_repack的工作流程是怎样的?
pg_repack的工作流程包括创建日志表、添加触发器、创建影子表、构建索引、应用更改、交换表和删除原始表。
pg_repack有哪些重要选项?
pg_repack的重要选项包括指定并行连接数、执行在线VACUUM FULL、设置等待超时和绕过超级用户验证。
使用pg_repack时有哪些限制?
pg_repack不能重组临时表,不能通过GiST索引对聚簇表进行重组,并且在操作期间不能执行DDL命令。
🏷️