如何[MYSQL] REDUNDANT行格式的数据解析?
- 内容介绍
- 文章标签
- 相关推荐
哎,又是MySQL REDUNDANT格式,这玩意儿还没死绝吗?
蚌埠住了! 说实话,看到REDUNDANT这三个字我就头疼。都什么年代了大家不都早就用DY不结盟IC或者COMPRESSED了吗?这REDUNDANT格式简直就是数据库界的古董, 就像是你家阁楼里那个不知道哪年买的、积满灰尘的旧收音机。你不想用它,但是它就在那儿,而且有时候你还真得把它打开听听里面到底在放什么歌。特别是当我们需要去解析一些老旧系统的.ibd文件, 或者做一些数据恢复的时候,这玩意儿就像幽灵一样冒出来。
很多人问我,怎么去解析这种格式的数据?网上的文章一搜一大把,但是说实话,大部分都写得跟教科书似的,看着就困。而且, 现在的工具大多都只支持DY不结盟IC和COMPRESSED比如我们之前写的那个ibd2sql工具,之前就不支持REDUNDANT。这就像是你有一把瑞士军刀,后来啊发现上面唯独缺了开啤酒瓶的那根针,气人不气人?

所以今天我们就来硬啃这块骨头。不管它多老,多难吃,我们都要把它给嚼碎了咽下去。我们要写一个脚本来解析它, 说白了就是... 而且要写得简单粗暴,毕竟人生苦短,何必在那些花里胡哨的代码上浪费时间呢?
这破格式到底长啥样?
抄近道。 先别急着写代码,我们得先搞清楚这REDUNDANT到底是个什么鬼东西。在InnoDB 1.0.X版本之前,也就是MySQL 5.1那会儿,这玩意儿还是默认格式之一。它的设计目标好像并不是为了省空间,而是为了... 嗯,为了兼容?或者是为了显得数据很丰富?
你看啊, DY不结盟IC格式多聪明,它有个专门的nullable bitmap而且只记录变长字段的长度,像INT这种固定长度的字段,它根本懒得去记长度。但是REDUNDANT就不一样了它通通都记录长度!不管你是变长的还是固定的,它都要记一笔。
哎,又是MySQL REDUNDANT格式,这玩意儿还没死绝吗?
蚌埠住了! 说实话,看到REDUNDANT这三个字我就头疼。都什么年代了大家不都早就用DY不结盟IC或者COMPRESSED了吗?这REDUNDANT格式简直就是数据库界的古董, 就像是你家阁楼里那个不知道哪年买的、积满灰尘的旧收音机。你不想用它,但是它就在那儿,而且有时候你还真得把它打开听听里面到底在放什么歌。特别是当我们需要去解析一些老旧系统的.ibd文件, 或者做一些数据恢复的时候,这玩意儿就像幽灵一样冒出来。
很多人问我,怎么去解析这种格式的数据?网上的文章一搜一大把,但是说实话,大部分都写得跟教科书似的,看着就困。而且, 现在的工具大多都只支持DY不结盟IC和COMPRESSED比如我们之前写的那个ibd2sql工具,之前就不支持REDUNDANT。这就像是你有一把瑞士军刀,后来啊发现上面唯独缺了开啤酒瓶的那根针,气人不气人?

所以今天我们就来硬啃这块骨头。不管它多老,多难吃,我们都要把它给嚼碎了咽下去。我们要写一个脚本来解析它, 说白了就是... 而且要写得简单粗暴,毕竟人生苦短,何必在那些花里胡哨的代码上浪费时间呢?
这破格式到底长啥样?
抄近道。 先别急着写代码,我们得先搞清楚这REDUNDANT到底是个什么鬼东西。在InnoDB 1.0.X版本之前,也就是MySQL 5.1那会儿,这玩意儿还是默认格式之一。它的设计目标好像并不是为了省空间,而是为了... 嗯,为了兼容?或者是为了显得数据很丰富?
你看啊, DY不结盟IC格式多聪明,它有个专门的nullable bitmap而且只记录变长字段的长度,像INT这种固定长度的字段,它根本懒得去记长度。但是REDUNDANT就不一样了它通通都记录长度!不管你是变长的还是固定的,它都要记一笔。

![如何[MYSQL] REDUNDANT行格式的数据解析?](/imgrand/BAhzlnvB.webp)