-
Notifications
You must be signed in to change notification settings - Fork 65
关于.mrk产生的疑问 #51
Copy link
Copy link
Open
Description
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,但似乎并不能和结果对应上,故望解答一下。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels