I had a look into what actually changed in the table. At the first write that I grabbed, four rows in that segment had such a change: 117ee000 77 00 00 00 00 df b8 82 8e a4 00 00 64 00 a0 00 |w...........d...| 117ee000 77 00 00 00 f0 22 b4 f3 68 d3 00 00 64 00 a0 00 |w...."..h...d...| 117ee0a0 f8 5c 00 00 f8 5c 00 00 09 00 00 00 06 00 f7 8b |.\...\..........| 117ee0b0 13 00 04 00 93 00 18 0d d8 27 fe 01 00 00 00 00 |.........'......| 117ee0b0 13 00 04 00 93 01 18 0d d8 27 fe 01 00 00 00 00 |.........'......| 1aad8000 77 00 00 00 30 fc 8c a5 80 8a 00 00 58 00 a8 00 |w...0.......X...| 1aad8000 77 00 00 00 e8 12 8a f3 6e 5b 00 00 58 00 a8 00 |w.......n[..X...| 1aad80a0 f6 5d 00 00 00 00 00 00 |.........]......| 1aad80b0 09 00 00 00 06 00 6c d5 10 00 04 00 03 08 18 0d |......l.........| 1aad80b0 09 00 00 00 06 00 6c d5 10 00 04 00 03 09 18 0d |......l.........| If I get that right, then it is the HEAP_XMIN_COMMITTED from t_infomask that got set for the rows. The next write is a bit different: 0000a000 76 00 00 00 60 9d 84 d0 23 4c 04 00 70 00 50 01 |v...`...#L..p.P.| 0000a000 78 00 00 00 80 81 e9 05 78 0d 04 00 70 00 50 01 |x.......x...p.P.| 0000a690 cf 51 00 00 00 00 00 00 |504c54...Q......| 0000a690 cf 51 00 00 13 5e 00 00 |504c54...Q...^..| 0000a6a0 00 00 00 00 06 00 05 00 12 00 04 00 03 2b 18 0d |.............+..| 0000a6a0 00 00 00 00 06 00 05 00 12 00 04 00 93 23 18 0d |.............#..| 003ec000 76 00 00 00 30 98 85 d0 59 e9 04 00 60 00 48 01 |v...0...Y...`.H.| 003ec000 78 00 00 00 08 33 1b 03 bd 97 04 00 60 00 48 01 |x....3......`.H.| 003eddf0 cf 51 00 00 00 00 00 00 00 00 00 00 06 00 f6 01 |.Q..............| 003eddf0 cf 51 00 00 13 5e 00 00 00 00 00 00 06 00 f6 01 |.Q...^..........| 003ede00 02 00 04 00 03 2b 18 0d f3 56 2a 00 00 00 00 00 |.....+...V*.....| 003ede00 02 00 04 00 93 23 18 0d f3 56 2a 00 00 00 00 00 |.....#...V*.....| It seems here is the t_xmax for the row updated, and also flags in t_infomask changed - and there are about 1000 rows (of some 3 mio. that are contained in this segment) where this is done. So if I get this right, it looks like some out-of-band housekeeping is done here. Now, while I would understand that this is done as occasion offers when a record is read anyway, and I do not think that I grok the XID housekeeping in fullness, I also do not think that I have any open transactions that would persist a server restart. So I was under the impression that a server restart plus a vacuum FULL, without any further update/delete operations, should resolve all the needs for such housekeeping for the time being, and quiesce the situation. Apparently it does not. So, then, what does?