← SQL Server Internals

Page Structure Explorer

▶ DRILL

Every SQL Server table and index lives on 8 KB pages. This shows how a single page is laid out — header, data rows growing from the top, slot array growing from the bottom, and free space in between.

Stores actual table rows. Forms the leaf level of a clustered index, or the pages of a heap. Rows are variable-length; a slot array at the bottom of the page indexes their offsets.
8,192 byte pageDATA
HEADER96 B · offset 0 · all page types
PageType=1 · IndexLevel · LSN · NextPage · PrevPage · SlotCnt · FreeData · ObjectId…
s[0]id=1"Alice" · active29 B
s[1]id=2"Bob" · pending28 B
s[2]id=3"Carlos" · closed30 B
s[3]id=4"Diana" · archived31 B
s[4]id=5"Elena" · review29 B
↓ records grow down147 B used
FREE SPACE7,939 B · 96.9%
fill: 3.1%
↑ slot array grows up10 B used
SLOT ARRAY
end of page · grows toward center
s[0]s[1]s[2]s[3]s[4]
5 × 2 B = 10 B
# explanation
Click any section of the page to learn what it does. Use the tabs above to switch between Data, Index, and IAM pages and see how the internal layout differs.
Header fields — click to inspect
1BPageType
1BTypeFlagBits
1BIndexLevel
2BFlagBits
2BIndexId
6BPageId (FileId:PageNum)
6BNextPage
6BPrevPage
4BObjectId
8BLSN
2BFreeCount
2BFreeData
2BSlotCnt
2BReservedCount
2BXactReserved
6BXdesId
2BGhostRecCnt
4BChecksum / Torn bits
32B(padding)
# page stats
page size8,192 B
header96 B (all page types)
records147 B (5 entries)
slot array10 B (5 × 2)
free space7,939 B (96.9%)
# page size8,192 bytes — fixed, unchanged since SQL Server 7.0
# header96 bytes — page type, page ID, prev/next pointers, free space offset, LSN
# slot array2 bytes per row — offsets into the page body, used for row lookup by slot number
# noteSimplified model — row sizes and field counts are illustrative, not exact