通常当一个事务在 PostgreSQL 中提交时,逻辑解码过程将立即启动并将 WAL 数据转换为消费者的数据流。我的理解是
提交 » WAL » 解码过程 » 发布以过滤表 » 存储数据的插槽
我想了解的是:
- 解码过程 - 无论您的消费者是启动还是关闭,这都会解码 WAL,只需解码并将其推送到插槽即可。或者,如果这是错误的,那么 PostgreSQL 将不会进行解码并等待消费者启动。
- 插槽是保存解码数据的存储区域,或者它只是保持状态。
- 解码过程 - 我为特定表启用了逻辑复制。但是在另一张桌子上,我进行了批量提交。此更改也应该是解码过程的一部分,它将解码数据,然后检查发布。如果该表不存在,则只需保留它并解码下一个事件。这是正确的吗?
我做了一个 PoC 来模拟这个场景。得到了我所有问题的答案。