我想进一步了解PG逻辑复制插槽与逻辑解码插件一起工作的方式。当使用特定的输出插件制作插槽时,可以说WAL2JSON,如果不流式传输/使用该插槽会发生什么?是否仅跟踪偏移量和有关WAL的其他信息,然后仅在流开始启动时才进行解码,还是解码器插件实际上在整个时间内解码并建立了一些缓冲区?
我正在尝试查找使用官方Java PG库(org.postgresql)的问题,但需要更多了解所有这些东西在PG中的工作方式。我看到的问题是,有时当我进行阻塞读取时,要花很长时间才能获取更改(有时需要几分钟的延迟),然后读取的后续更改就会越来越延迟。似乎唯一有帮助的是从刷新的最后一个LSN重新启动流,但是我不确定为什么这样做。启动流的行为是否会导致缓冲区建立,然后随后的read或readPending调用从该缓冲区消耗掉?读调用是否只是抢占队列/缓冲区中的下一个对象,还是它们在PG /逻辑解码器插件中发生的某些逻辑?