我们知道,当检查点发生时,REDO点指向的 WAL 记录五花八门。在 17 的源代码中进行了增强,加入了一个XLOG_CHECKPOINT_REDO 类型的 WAL 记录,30 个字节。
这 30 个字节分为 24 + 2 + 4,24 个字节是标准的 WAL 记录的头,2 个字节是短头,4 个字节记录了 WAL_LEVEL 的值,分为 0,1,2三种可能,具体定义如下:
/* WAL levels */
typedef enum WalLevel
{
WAL_LEVEL_MINIMAL = 0,
WAL_LEVEL_REPLICA,
WAL_LEVEL_LOGICAL,
} WalLevel;
对应的讨论在这里:
https://www.postgresql.org/message-id/CAFiTN-s-K%3DmVA%3DHPr_VoU-5bvyLQpNeuzjq1ebPJMEfCJZKFsg%40mail.gmail.com