# Page Types
Complete table of all InnoDB page types recognized by `inno`:
| `ALLOCATED` | 0 | Freshly allocated | Page type field not yet initialized; appears in tablespaces with preallocated but unused extents |
| `UNDO_LOG` | 2 | Undo log | Stores previous values of modified records for MVCC and rollback |
| `INODE` | 3 | File segment inode | Bookkeeping for file segments (collections of extents belonging to an index) |
| `IBUF_FREE_LIST` | 4 | Insert buffer free list | Insert buffer free space management (system tablespace only) |
| `IBUF_BITMAP` | 5 | Insert buffer bitmap | Tracks which pages have buffered writes pending (page 1 of every tablespace) |
| `SYS` | 6 | System internal | Various system tablespace purposes (data dictionary, doublewrite buffer) |
| `TRX_SYS` | 7 | Transaction system header | Transaction system bookkeeping including rollback segment pointers (system tablespace only) |
| `FSP_HDR` | 8 | File space header | Page 0 of each tablespace; contains space ID, size, flags, and extent descriptors |
| `XDES` | 9 | Extent descriptor | Extent descriptor page for each group of 16,384 pages beyond the first |
| `BLOB` | 10 | Uncompressed BLOB | Externally stored column data for columns exceeding the inline limit |
| `ZBLOB` | 11 | First compressed BLOB | First page of a compressed externally stored column |
| `ZBLOB2` | 12 | Subsequent compressed BLOB | Continuation pages of a compressed externally stored column |
| `COMPRESSED` | 14 | Compressed page | Page stored in compressed format (requires `KEY_BLOCK_SIZE`) |
| `ENCRYPTED` | 15 | Encrypted page | Page encrypted with tablespace-level encryption (MySQL) |
| `COMPRESSED_ENCRYPTED` | 16 | Compressed + encrypted | Page that is both compressed and encrypted |
| `ENCRYPTED_RTREE` | 17 | Encrypted R-tree | Encrypted spatial index page |
| `INSTANT` / `SDI_BLOB` | 18 | Vendor-dependent | MariaDB: instant ALTER TABLE metadata; MySQL: SDI overflow data |
| `LOB_INDEX` | 20 | LOB index | Large object index page for new LOB format (MySQL 8.0+) |
| `LOB_DATA` | 21 | LOB data | Large object data page for new LOB format (MySQL 8.0+) |
| `LOB_FIRST` | 22 | LOB first page | First page of a large object in new LOB format (MySQL 8.0+) |
| `RSEG_ARRAY` | 23 | Rollback segment array | Array of rollback segment header page numbers (MySQL 8.0+) |
| `SDI` | 17853 | SDI | Serialized Dictionary Information containing table/index metadata (MySQL 8.0+) |
| `SDI_BLOB` | 17854 | SDI BLOB | SDI overflow data for large metadata records (MySQL 8.0+) |
| `INDEX` | 17855 | B+Tree index | Primary key and secondary index data; the most common page type in data tablespaces |
| `RTREE` | 17856 | R-tree index | Spatial index data for geometry columns |
| `PAGE_COMPRESSED` | 34354 | MariaDB page compression | Page-level compression using zlib, LZ4, LZO, LZMA, bzip2, or Snappy (MariaDB only) |
| `PAGE_COMPRESSED_ENCRYPTED` | 37401 | MariaDB compressed + encrypted | Page-level compression combined with per-page encryption (MariaDB only) |
## Notes
### Value 18 Ambiguity
Page type value 18 has different meanings depending on the vendor:
- **MySQL 8.0+**: `SDI_BLOB` -- overflow pages for SDI records that exceed a single page
- **MariaDB**: `INSTANT` -- metadata for columns added with instant ALTER TABLE
`inno` resolves this automatically based on detected vendor. If vendor detection is ambiguous, the output will note the dual interpretation.
### Page Type Distribution
A typical InnoDB tablespace has the following page type distribution:
- **INDEX** pages dominate (often 90%+ of all pages) -- these hold the actual table data and index entries
- **FSP_HDR** appears exactly once (page 0)
- **IBUF_BITMAP** appears once per tablespace (page 1)
- **INODE** appears once or twice (page 2, sometimes more for large tablespaces)
- **ALLOCATED** pages indicate preallocated but unused space
- **SDI** pages appear in MySQL 8.0+ tablespaces (typically pages 3-4)
Use `inno parse` to see the page type summary for any tablespace file.