运行 对只读副本进行真空分析是否安全?

is it safe to run vacuum analyze on a read replica?

我在 AWS RDS 上通过 AWS DMS 从 PG 9.5 主副本设置了逻辑复制到 PG 12.3 只读副本。 (仅供参考,副本 session_replication_role 设置为“副本”。)

查询计划未在 PG 12.3 只读副本上优化,甚至基本查询 运行 在不利用索引的情况下也很慢。通常这很容易通过 运行ning "vacuumdb analyze" 解决。

问题:运行 分析只读副本安全吗?或者我应该 运行 它在主服务器上并且它会传播?

这应该没问题,因为它在物理上而不是逻辑上修改了 table。

但是,我只会收集 vacuumdb --analyze-only 的统计数据。很少需要 运行 VACUUM 来提高查询性能,并且比 ANALYZE 使用更多的资源。

我尝试使用 Postgres 13.3 在只读副本上执行 vacuumdb --analyze-only -j 1 但它失败了,并显示副本处于恢复模式的错误:

vacuumdb: processing database "mydb": Generating minimal optimizer statistics (1 target)
vacuumdb: error: processing of database "mydb" failed: ERROR:  cannot execute ANALYZE during recovery

似乎只读副本确实从主数据库同步了统计信息,因此副本上不需要 vacuum analyze 运行。

涵盖了只读副本内存太少而无法使用索引的情况。因此,可能值得为只读副本尝试更大的实例类型以防有帮助。