【0371】Postgres内核 实现构建一个 WAL record
1. WAL record
一条 WAL record 包含所有 WAL 记录类型共有的头部、特定于记录的数据以及有关已修改数据块的信息。每个已修改的数据块均由一个 ID 号加以标识, 并且可以选择性地具有更多与该块相关的特定于记录的数据。若 XLogInsert 判定需要获取某个数据块的全页图像,则与该数据块相关的数据不会被涵盖在内。
1.1 构建 WAL record 的几个 API
构建 WAL 记录的API由五个函数组成:XLogBeginInsert、XLogRegisterBuffer、XLogRegisterData、XLogRegisterBufData 以及 XLogInsert。
首先,调用 XLogBeginInsert()。接着,使用 XLogRegister*函数注册所有已修改的缓冲区以及重放更改所需的数据。最后,通过调用 XLogInsert()将构建好的记录插入到 WAL 中。
XLogBeginInsert();/* *