The Page Header has 14 parts, as follows:
number of directory slots in the Page Directory part; initial value = 2
record pointer to first record in heap
number of heap records; initial value = 2
record pointer to first free record
"number of bytes in deleted records"
record pointer to the last inserted record
number of consecutive inserts in the same direction, for example, "last 5 were all to the left"
number of user records
the highest ID of a transaction which might have changed a record on the page (only set for secondary indexes)
level within the index (0 for a leaf page)
identifier of the index the page belongs to
"file segment header for the leaf pages in a B-tree" (this is irrelevant here)
"file segment header for the non-leaf pages in a B-tree" (this is irrelevant here)
(Note: I'll clarify what a "heap" is when I discuss the User Records part of the page.)
Some of the Page Header parts require further explanation:
Records which have been freed (due to deletion or migration)
are in a one-way linked list. The
pointer in the page header points to the first record in the
list. The "next" pointer in the record header (specifically,
in the record's Extra Bytes) points to the next record in the
It's useful to know whether inserts are coming in a constantly
ascending sequence. That can affect
Warning: Like all record pointers, these point not to the beginning of the record but to its Origin (see the earlier discussion of Record Structure).
These variables contain information (space ID, page number,
and byte offset) about index node file segments.
InnoDB uses the information for allocating
new pages. There are two different variables because
InnoDB allocates separately for leaf pages
and upper-level pages.