derby数据库源码分析(一)--页面分析

本文深入探讨Apache Derby数据库的源代码,重点关注数据库页面的结构。页面大小默认4096字节,包含format id、固定大小的头部、slot区域等组成部分。页面头部有状态信息,slot区域的entry用于定位记录。记录由头部和列组成,列头部包含数据长度和状态信息。通过对Derby的源码分析,可以揭示数据库底层的工作原理。
摘要由CSDN通过智能技术生成

一直以来都对数据库充满了好奇,想知道数据库底层的运作模式,为什么它可以做到高效存储,为什么可以做到ACID,锁机制如何实现。。。等等一系列的问题。

后来找到了Apache的顶级开源项目Derby数据库,该数据库可以支持目前主流的关系型数据库功能,并且代码量不大(20几M)。通过对数据库源代码的研究能够了解更多数据库底层的秘密。

首先先以Derby数据库的底层页面的格式说起。这个页面指的是存储数据库记录的一般页面。Derby数据库的页面默认大小为4096字节。

Format id(2)

页面头部(60)

数据库记录

Slot

校验和(8)

上述表格括号里面的数字表示其占页面的大小,单位是字节。

上述表格中的第一个部分是format id,在derby数据库中对每一个需要存储到磁盘的类分配了一个format id。比如页面对应的类为StoredPage,如果将StoredPage对应的对象写入磁盘时,首先需要将该类对应的format id写入磁盘。这样,当从磁盘读取数据时,可以通过format id找到对应的类,进而在内存中还原该对象。StorePage的format id是117。

每一个页面都有一个页面头部(header),页面头部大小固定,占60个字节。里面包括的内容有:

名字

长度(单位byte)

类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值