Skip to content

关于.mrk产生的疑问 #51

@smokeriu

Description

@smokeriu

P110中,图6-18中举例说明了.mrk中的文件内容,其中压缩文件中的偏移量示例中为0和12016
在后续P112中,说明了12016=12000+8+8,其中8为头信息压缩后的大小。
不过我在此有个疑问,第二个8指的是什么大小

书中提及定位方式可参考图6-19,不过图6-19似乎含义是,12016=12000+8+8的第二个8似乎是第二个压缩块的头信息?
但这样的话,第一个偏移量0又没有包含第一个数据块的头信息。

即如果12016=12000+8+8中第二个8的含义是第二个压缩块的头信息,那么图6-18中偏移量示例应该为8和12016

后来我参考官方示例,导入了同样的文件,可以看到书中示例数据均为真实数据。
执行下述语句

od -l -j 0 -N 480 --width=24 JavaEnable.mrk2

并且发现了下面数据:0,12016,26693
再执行

clickhouse-compressor --stat < ./JavaEnable.bin

可以得到所有数据块压缩后的大小,其中前三个为12000,14661,4936
经过简单计算,可得:26693=12016+14661+8+8。似乎也有一个8的多余。(毕竟截止第三个数据块开始只有3个,但实际计算中包含了4个8。)
同时对clickhouse-compressor --stat < ./JavaEnable.bin展示的结果进行统计,发现总的数据块压缩共有135个,总大小为1396487字节。而JavaEnable.bin在系统中占用了1394327字节1396487-1394327=2160=135*16

故似乎.bin文件中,似乎还有文中未提及的空间,查看网上资料似乎有一块checksum,但似乎并不能和结果对应上,故望解答一下。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions