我在源代码( https://github.com/postgres/postgres/blob/914e72e6e8d3e94346f3495dac36d46aa9912bb5/src/backend/replication/walreceiver.c#L1191 )中看到关于XLogWalRcvSendHSFeedback函数,它计算最旧的xmin并将其发送到wal发送者的初级。
但我的问题是..
WAL接收进程是否会向主节点的 WAL 发送进程发送有关备用查询(选择查询)快照的任何信息来延迟 vaccuum 进程?如果是,如何?可能共享源代码参考。
您正在查看旧版本的源代码,但这并没有从根本上改变。备用循环遍历所有会话,对于那些具有快照或打开事务的会话,它将考虑
backend_xid
和backend_xmin
(如图所示pg_stat_activity
)并计算其中的最小值。如果存在任何带有较旧的xmin
或 的复制槽catalog_xmin
,它们也会被考虑在内。ComputeXidHorizons()
请参阅中的函数src/backend/storage/ipc/procarray.c
。