performance - 单独压缩每一行还是压缩整个文件更好?
问题描述
我的用例是我整天都在向文件写入条目。我可以将这些条目压缩写入,也可以在事后压缩整个文件。这些文件可能会变得相当大(约 10 GB 未压缩),我同时写入多个文件。其他一些考虑因素是我可以将文件拆分为更小的粒度,以解决每个文件压缩的缓冲区问题。对此可能没有明确的正确或错误答案,但只是看看是否还有其他需要考虑的因素。
压缩后,这些文件将被上传到某种存储介质,用于存档和可能的后续分析。
每行压缩
优点 | 缺点 |
---|---|
写作时更节省空间 | 实施更复杂 |
阅读时更节省空间,因为我可以按每个条目的粒度解压缩 | 与压缩整个文件相比,磁盘空间使用效率较低 |
按文件压缩
优点 | 缺点 |
---|---|
更好地压缩每个文件,因为有更多的数据可以压缩 | 在压缩之前需要更大的磁盘空间缓冲区来处理全天的写入 |
实现更简单,正常写入文件,然后使用简单的 linux 工具进行压缩 |
解决方案
除非你有非常非常长的行,否则你几乎不会在单行上得到压缩。你试过了吗?
您可以通过累积行来获得两全其美的效果,直到您有足够的压缩空间,然后将它们写入文件。gzlog 就是这样做的。
推荐阅读
- java - 中断其他进程的线程
- autoit - 如何在 GUI 中显示更改的文件中的文本?
- javascript - JS 特别是从字符串更改日期格式
- excel - 如何验证工作簿中是否已存在 Excel 工作表?
- jquery - 如何在 Kendo UI 图表上包装 categoryAxis 文本
- java - 使用正则表达式将句子拆分为标记,去除所有必要的标点符号,不包括作为单词一部分的标点符号
- r - 如何删除要像 png 一样导出的 data.frame 中的行名?
- excel - 如何修复我的 VBA 代码,使电子邮件内容中的日期不是静态的
- linux - 带有括号的 Bash for 循环在 linux 中工作,而不是在 Git Bash 中
- spring-boot - 在 prometheus 集成中添加端点