You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

InnoDB中off-page是什么?如何访问off-page存储的数据?

InnoDB中TEXT/BLOB的Off-Page存储及检索机制

1. 什么是Off-Page?

InnoDB的核心存储单元是页,默认大小为16KB。当你使用TEXT或BLOB类型存储数据时,如果数据量达到一定阈值(比如单字段内容超过768字节,或者当前行的其他数据已经占满了页的剩余空间),InnoDB不会把完整的字段内容塞进该行所在的主页里——而是在该行的位置只保留一个20字节的指针,真正的大字段数据会被存储到专门的**溢出页(Overflow Page)**中。这种将数据存储在行所在主页之外的方式,就叫做off-page存储。

简单来讲,off-page就是把大体积的TEXT/BLOB数据放到主行页以外的独立存储区域,主行只留存指向该区域的"地址标签",以此节省主页的空间,避免单页数据过载。

2. 从Off-Page检索值的访问流程

当查询需要读取off-page存储的TEXT/BLOB数据时,InnoDB会按以下步骤处理:

  • 第一步:通过主键索引或二级索引定位到目标行所在的主页,读取该行的基础数据;
  • 第二步:提取行中存储的20字节指针,这个指针包含了对应溢出页的精确存储地址信息;
  • 第三步:根据指针地址找到对应的溢出页,如果字段内容过大(超过单个16KB页的容量),多个溢出页会通过链表的形式关联起来;
  • 第四步:依次读取所有关联的溢出页,将零散的数据片段拼接成完整的字段内容,最终返回给查询请求。

补充说明:如果TEXT/BLOB的内容很小(比如小于768字节),InnoDB会优先把数据直接存在行所在的主页中(on-page存储),这样能减少额外的页访问,提升查询效率。


内容的提问来源于stack exchange,提问作者vinieth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:30:20