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

B树数据库数据超出页大小时的处理方式及跨页索引疑问

处理B树中大尺寸数据的常见机制

在《Designing Data Intensive Applications》一书中提到:

相比之下,B树将数据库拆分为固定大小的块或页,传统大小为4 KB(有时更大),并且每次读写一页。

针对你提出的问题,数据库处理超过页大小的数据(通常称为“大对象”或LOB)主要有两种主流方式:

  • 溢出页(Overflow Pages)机制
    这是最常见的处理方式。当插入的数据大小超过单个页的容量时,数据库会将该数据的核心索引字段(比如主键、键值)保留在B树的主节点页中,而把超出页大小的实际数据存储在专门的溢出页里。主节点页中会存储指向这些溢出页的指针。如果数据太大,单个溢出页也装不下,溢出页之间还会通过指针形成链表,串联所有存储该数据的溢出页。
    这种方式不需要额外维护独立的索引,因为B树主节点已经通过指针关联了所有对应的溢出页,查询时通过主节点的指针就能遍历所有存储该数据的页。

  • 分离存储(Off-Page Storage)
    部分数据库会直接将大尺寸数据完全存放在B树结构之外的独立存储区域,B树的节点页中只存储指向该数据块的引用(比如数据的物理地址或逻辑ID)。查询时先通过B树找到这个引用,再去对应的存储区域读取完整数据。
    同样,这种方式也不需要额外的索引,B树本身已经承担了索引定位的作用,唯一的关联就是节点页里的引用指针。

简单来说,数据库不会为这类跨页数据单独维护一套索引,而是通过在B树主节点中嵌入指针/引用的方式,将主索引与溢出页或独立存储的数据关联起来,既保持了B树的结构特性,又解决了大尺寸数据的存储问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:29:54