Page Header

Stores information about the page to help with navigation, maintenance, and optimization.

Usually storing flags to describe page contents and layout, # of cells, lower/upper offsets, other metadata [PostgreSQL PageHeaderData, SQLite].

Magic Numbers


Constant multi byte block identifying the file type (e.g., index page, data page, metadata page) + version (placed in the file or page header).

Example: 50 41 47 45 (hex for PAGE)

Sibling Links


Store left + right page pointers in the header.

<aside> <img src="/icons/bookmark_yellow.svg" alt="/icons/bookmark_yellow.svg" width="40px" />

Avoids having to go back to the parent → improving sequential scans.

</aside>

Addiotional split/merge complexity

The backward link of right sibling needs to be updated when it’s left sibling is split/merged.

Since updates happen in sibling nodes, not in a splitting/merging node, it may require additional locks for concurrency control.