深入理解数据库之存储存引擎(存储文件格式)

本文探讨了数据库中B树如何存储到磁盘,强调了磁盘访问与内存访问的区别。文章介绍了分槽页结构作为解决可变大小数据记录存储的一种方式,详细阐述了分槽页的组成、优势以及如何管理可变大小数据,包括空间回收和动态布局策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面的文章我们已经讨论了B树的基本结构和操作,现在我们来看看数据库系统中B树是怎样被存储到磁盘文件的。磁盘的访问和内存的访问方式是完全不同的,操作系统的虚拟内存机制使得应用程序可以透明的访问内存;而访问磁盘时需要借助系统调用并指定访问文件的位置,然后还要将文件的内容读取解析到内存中。

当在设计高效的磁盘数据结构时必须考虑到以上这一区别。下面我们将讨论如何设计易于创建、修改和解析的文件格式,讨论设计高效磁盘数据结构的通用原则和实践,这些原则不仅仅只适用于B树。

事实上有很多可行的方式可以实现B树的磁盘存储,这里我们讨论几个常用的实现方式。每个具体实现的细节可能略有不同,但一般原则是相同的。在真正实现B树磁盘存储时,仅仅理解B树的基本机制(比如节点拆分和合并)是不够的,许多其它因素也必须一并考虑才能达到最终目的。

在磁盘数据结构中,指针的含义和内存中的含义有很大的不同。事实上可以把磁盘B树看成是一种文件页面管理机制:它组织文件页面并能快速的定位页面,因此文件的页面和指针都必须正确的设置和保存到适当的位置。

页面结构

数据库系统在数据文件和索引文件中存储数据记录,这些文件被划分为大小固定的称为页的单元。页的大小是文件系统块的大小的倍数,通常在4到16Kb之间。

B树中节点分为两类,包含键和数据记录对的叶子节点,以及包含键和指向其它节点指针的非叶子节点。每一个节点由一个或多个页构成,所以B树中节点和页可以认为是等同的。

在最早关于B树的论文中描述了一种存储固定大小数据记录的简单页数据组织方式。如图3-4, 每一页包含多个由三个成员组成的结构:k存储键,v存储键关联的值,p指向子页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值