根据文档,
restart_lsn
是:
而此插槽的使用者可能仍需要的最旧WAL的地址(LSN),因此在检查点期间不会自动删除该地址,除非该LSN比当前LSN大max_slot_wal_keep_size。如果此插槽的LSN从未被保留,则为NULL。
confirmed_flush_lsn
是:
对我来说不清楚(针对逻辑插槽)的是这两个属性如何相互关联?逻辑插槽的使用者已确认接收数据的地址(LSN)。早于此数据不再可用。物理插槽的值为NULL。
confirmed_flush_lsn
的描述表明旧日志已被删除,但restart_lsn
似乎并非完全正确。如果在restart_lsn
和confirmed_flush_lsn
之间存在一些事务日志,则该数字可以是多少?它是某些预定义的、不可变的值,比如几MB,还是真正可以增加到max_slot_wal_keep_size
?如何决定“使用者可能仍需要的WAL”和“不需要”的是什么?
restart_lsn
和max_slot_wal_keep_size
作为安全阀起作用。如果WAL的消费者落后太多,WAL开始堆积,那么一些WAL将根据这些值的组合开始被修剪。 - Adrian Klaver