我正在学习 WAL 在 postgresql 中是如何工作的,但我不太明白 len(record) 值是如何获得的,以及在哪里可以找到记录。
对于测试,我做了这样的插入:
INSERT INTO int_table (field1, field2, field3, field4, field5) VALUES (1, 1, 1, 1, 1);
INSERT INTO int_table (field1, field2, field3, field4) VALUES (1, 1, 1, 1);
INSERT INTO int_table (field1, field2, field3) VALUES (1, 1, 1);
在 pg_waldump.exe 的帮助下,我得到了 wal 转储:
rmgr: Heap len (rec/tot): 79/ 79, ...
rmgr: Heap len (rec/tot): 75/ 75, ...
rmgr: Heap len (rec/tot): 71/ 71, ...
所以,我可以看到记录之间的差异是 4 个字节(一个 int 值)。但是,我对其他字节中包含的信息感到好奇。例如,最后一条记录有 59 字节的附加信息,以及三个值 (1, 1, 1) 的 4 + 4 + 4 字节。
所以,我的问题是这 59 个字节被写入何处以及为何写入。