基础的输出插件回调仅在事务彻底提交时被触发。对于单次修改数百万行数据的巨型长事务,若全部堆积到提交阶段才集中传输,会引发巨大的网络毛刺与复制延迟。
PostgreSQL 支持对执行中的未决事务进行分块流式传输。当所有未决事务在 WAL 中解码的数据量超过 logical_decoding_work_mem 设定的阈值时,系统会自动挑选占用内存最大的顶层事务,将其生成的中间变更通过 stream_start_cb 与 stream_stop_cb 界定的流式分块提前推向下游。
待事务最终提交时,仅需发送轻量的 stream_commit_cb 指令即可完成激活,大幅抹平峰值延迟。流式传输依然严格保证全局事务提交顺序。