PostgreSQL引入了pg_repack扩展来解决表中的膨胀和碎片化问题。与VACUUM FULL不同,pg_repack允许在线重建表而无需锁定表。操作过程中,pg_repack创建日志表,添加触发器,创建影子表,构建索引,应用更改,交换表,并删除原始表。重要选项包括指定并行连接数,执行在线VACUUM FULL,设置等待超时和绕过超级用户验证。限制包括不能重新组织临时表或通过GiST索引对聚簇表进行重组。建议在低活动期间安排pg_repack,并避免过度使用。
本文介绍了在PostgreSQL中重建表的方法,包括使用VACUUM FULL命令的限制,Oracle中使用DBMS_REDEFINITION包的手动步骤,以及PostgreSQL中的pg_repack扩展。pg_repack可以在不中断读写操作的情况下重建表,并有效去除碎片。使用pg_repack重建表简单且提高数据库性能和存储利用率。
这篇文章是关于PostgreSQL开发者Artur Zakirov的采访,他在德国柏林工作,喜欢骑自行车和徒步旅行。他是pg_repack的维护者,希望未来能看到undo logs和索引组织表等功能。他建议参考PostgreSQL Developer FAQ和提交补丁的wiki页面来开始开发PostgreSQL。他相信PostgreSQL将在未来继续受欢迎,并推荐将其用于商业和个人项目。他对Go编程语言和Apache Arrow项目也感兴趣。
2024年2月6日,柏林举办了PostgreSQL二月聚会,共有32名与会者。会议在Redgate Software的柏林办公室举行,演讲者介绍了如何使用PostgreSQL进行数据转换和pg_repack工具的使用。会议期间还有社交时间。柏林的PostgreSQL Meetup已经存在多年,有约1400名成员。
完成下面两步后,将自动完成登录并继续当前操作。