PG 19 支持干湿分离
本期播客
PG 19 vacuumdb 干湿分离补丁
PG 19 vacuumdb 支持干湿分离了!
vacuumdb 是 PostgreSQL 的一个工具,用于对数据库进行清理(VACUUM)和分析(ANALYZE)。
这个补丁新添加的 --dry-run(空运行/模拟运行)选项的作用是:
打印命令,但不执行: 它会指示 vacuumdb打印出所有它原本要发送给 PostgreSQL 服务器执行的VACUUM和ANALYZE命令。不实际操作: 启用此选项后,这些命令将不会被发送到服务器执行,因此不会对数据库进行任何实际的清理或分析操作。
核心变更点
这个补丁主要修改了以下文件:
src/bin/scripts/vacuumdb.c和src/bin/scripts/vacuuming.h:
在 vacuumdb程序的选项解析中加入了对--dry-run的支持。在 vacuumingOptions结构体中添加了dry_run标志位。如果启用 dry-run模式,程序会打印一条信息提示用户当前处于模拟运行模式,并且不会发送任何命令到服务器。
src/bin/scripts/vacuuming.c:修改了处理 VACUUM和ANALYZE命令发送的逻辑 (run_vacuum_command函数)。新增逻辑:如果 dry_run为true,则只打印 SQL 命令(如果echo也启用),但不会调用PQsendQuery将命令发送到数据库连接。
doc/src/sgml/ref/vacuumdb.sgml:更新了 vacuumdb的手册页(man page),加入了对--dry-run选项的说明。
src/bin/scripts/t/100_vacuumdb.pl:添加了新的测试用例,确保 --dry-run选项能正确地打印预期的命令,但不会实际执行它们。
总结
这个功能对于用户来说非常实用,因为它允许用户在执行实际的数据库维护操作(如大规模的 VACUUM/ANALYZE)之前,先预览哪些命令会被执行,从而可以检查和验证操作的范围和参数是否正确,避免潜在的错误或不必要的资源消耗。
补丁详情: https://github.com/postgres/postgres/commit/d107176d27c73ea3589b949dde07b6bc38b8f583
vacuumdb: Add --dry-run.
author Nathan Bossart <[email protected]>
Tue, 9 Dec 2025 19:34:22 +0000 (13:34 -0600)
committer Nathan Bossart <[email protected]>
Tue, 9 Dec 2025 19:34:22 +0000 (13:34 -0600)
commit d107176d27c73ea3589b949dde07b6bc38b8f583
tree e3e93a198916dc99bb53a03dde45741c08d5f87a tree
parent 750816971b35270971dd77f37ed1e9655fce4ed9 commit | diff
vacuumdb: Add --dry-run.
This new option instructs vacuumdb to print, but not execute, the
VACUUM and ANALYZE commands that would've been sent to the server.
Author: Corey Huinker <[email protected]>
Reviewed-by: Chao Li <[email protected]>
Reviewed-by: Kirill Reshke <[email protected]>
Reviewed-by: Álvaro Herrera <[email protected]>
Discussion: https://postgr.es/m/CADkLM%3DckHkX7Of5SrK7g0LokPUwJ%3Dkk8JU1GXGF5pZ1eBVr0%3DQ%40mail.gmail.com