On Wed, Jun 22, 2022 at 5:06 PM Bagga, Rishu <bagri...@amazon.com> wrote:
> We are suggesting a minimal BufferedObject page header
> to be the following, overlapping with the key fields near the beginning
> of the regular PageHeaderData:
>
> typedef struct BufferedObjectPageHeaderData
> {
>     PageXLogRecPtr pd_lsn;
>     uint16_t       pd_checksum;
>     uint16_t       pd_flags;
>     uint16_t       pd_pagesize_version;
> } BufferedObjectPageHeaderData;
>
> For reference, the regular page header looks like the following:
> typedef struct PageHeaderData
> {
>     PageXLogRecPtr    pd_lsn;
>     uint16_t    pd_checksum;
>     uint16_t    pd_flags;
>     LocationIndex   pd_lower;
>     LocationIndex   pd_upper;
>     LocationIndex   pd_special;
>     uint16_t           pd_pagesize_version;
>     TransactionId   pd_prune_xid;
>     ItemIdDataCommon  pd_linp[];
> } PageHeaderData;
>
> After careful review, we have trimmed out the heap and index specific
> fields from the suggested header that do not add any value to SLRU
> components. We plan to use pd_lsn, pd_checksum, and pd_pagesize_version
> in the same way that they are in relational pages. These fields are
> needed to ensure consistency, durability and page correctness

I think that it's not worth introducing a new page header format to
save 10 bytes per page. Keeping things on the same format is likely to
save more than the minor waste of space costs.

-- 
Robert Haas
EDB: http://www.enterprisedb.com


Reply via email to