mysql ibd 附加_MySQL笔记-ibd文件格式初步分析(仅数据块笔记)

本文主要探讨MySQL中ibd文件的结构,包括InnoDB块大小、文件页数计算以及数据块的识别。通过分析,揭示了数据块的起始标识和数据存储特性,例如NULL和空字符串不占用空间,int类型占用4字节,可变长度字段按实际长度存储。
摘要由CSDN通过智能技术生成

在MySQL建立表后,会在对应的库文件夹下创建2个文件。

一个是frm,一个是ibd,目前这个博文为简单分析下这个文件格式。

这里首先要知道一些预备知识:

查看InnoDB块的大小,一般是16k

show vaiables like '%page%'

3e1e87f56d82b5ed0e776c9265cad19a.png

从中可以看到innodb_page_size为16384字节。

使用ibd除以这个字节大小,就可以知道这个文件有多少块了!

如:

3eeb3d39fe0c32d96fe51060fef92b58.png

98304/16384可知,这个gyj_t3.ibd有6个page

83f07d432c03e00a5e96be5d36eb826a.png

其中此库对应的数据为:

b1ae5575f04b49bbb16ac58be00ea47c.png

看下官方给的文件结图:

896dd6e9a420939f0c6fe7df77469e5a.png

第一块为:File Space Header

第二块为:Insert Buffer Bitmap

第三块为:File Segment inode

从第四块开始就是存数据的了,把对应的ibd文件放到windows下,打开看看。直接来看看第四块,数据块,头标识为0x45B

来搜索下:

31e2d21b03c93923af679c10231a3463.png

先来验证下这个是不是第三块的末尾:

C018h,对应的十进制为49176

第一块的位置:

fa8d0c4cc9b3061d310b51f00edc951d.png

为0018h对应的十进制为24。

这个前面的字符为文件头,用于标识这个是什么格式的文件,等信息。

下面来算算这个是不是第三块结束,的位置:(49176 - 24) / 16384 = 3刚刚好。

这个就是数据位了!

看下对应的数据文件:

fef988763b30a8098bfc27cce7d5cdec.png

从中可以看到,在MySQL数据段中,NULL以及’’不占空间。

int长度是4字节,其他可变长name长度是10字节,用多少长多少。

第二行数据ID:80 00 00 03,下一行在80 00 00 04

3bca8493e93a4e012ce3be8ac59ab7c2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值