知识卡片
压缩倒排文件不是空间换时间,而是空间时间双赢
内容
直觉上压缩要付出解压计算代价,用在查询路径应该会拖慢响应——但实测数据推翻了这个直觉。同样的TREC查询集,未压缩倒排文件处理10词查询要传输600000个指针共3.6MB数据,磁盘传输就要2秒;换成压缩倒排文件配合跳跃索引,传输数据量降到几十分之一,解码增加但远小于省下的I/O时间,查询响应反而快5到6倍,存储只多约6%。压缩本质是用磁盘带宽换CPU周期,这在磁盘远慢于CPU的年代必然划算。
参考来源
- 位置:第9章《系统实现》「查询性能」小节(源文件:_chapter-text/ch09.txt)
- 结论依据:原文给出未压缩倒排文件600000个指针传输需2秒,配合skip索引后查询响应快5-6倍、存储只多6%的具体实测数据,直接支持卡片对空间时间双赢的论述。
- 原始内容:"对……的查询,由于涉及600000个指针和3.6MB数据,因此所需的传输时间大约是两秒……使用skip可以使得响应速度快5~6倍……的skip后,大约增加了6%……使用压缩的倒排文件和不压缩的倒排文件相比,不仅降低了空间使用量,而且如果使用skip,还能提供更快的查询处理速度。"