On 17/11/2021 00:04, Andres Freund wrote:
On 2021-11-16 16:30:27 -0500, Robert Haas wrote:
I'm still not entirely clear on whether you prefer v1-0002, v2-0002,
or something else.

I think it basically doesn't matter much. It's such a small piece of the cost
compared to either the cost of a single insert or the ratio between
RedoRecPtr/FPW changes and the number of inserted records.

I guess v2-0002 is mildly simpler, so I very weakly lean towards that.

I was going to argue for v1, because I was worried about generating full-page writes unnecessarily. But looking closer, it doesn't do that. It will initially think that no full page images are needed, and perform the extra loop in XLogInsert() to try again with full page images. Similarly in heap_update(), it will fail in the direction of sometimes doing the "prefix-suffix compression" unnecessarily, which means a little bit of extra CPU work, but it won't affect the WAL record that gets written.

So either way is fine, really. That's a bit subtle, though, a comment somewhere would be good.

But here's yet another idea: We could initialize RedoRecPtr and doPageWrites in InitXLogInsert(). It would seem like a pretty natural place for it.

- Heikki

PS. typo in patch v2: s/prepard/prepared/


Reply via email to