.Tar.gz:压缩和解压缩的时间之间是否存在关系?


1

我正在将mongodb(~500GB)的备份压缩到.tar.gz存档中,这需要花费数小时的时间。我试图将该数据库备份到不同的机器上以进行测试,我想估计每台机器需要多长时间。

我的问题是,根据压缩的时间长短,我有什么方法可以估算解压缩归档所需的时间吗?

谢谢


1
一些基准。但是源和目标机器之间的硬件差异可能会导致结果差异很大....
xenoid

1
有趣的结果,感谢链接。我正在处理的大多数机器都有类似的硬件,所以我仍然可以有一个想法。我主要关心减压,所以看起来gzip对我来说是最好的选择,减压比压缩快10倍。
radschapur

1
我希望磁盘I / O成为这两个进程的瓶颈。写入往往比读取更快,因为缓冲意味着编写者不必等待磁盘。
巴马尔

Answers:


0

我不知道压缩与解压缩的标准比率,因为这实际上取决于您的数据和服务器资源。假设所有其他资源相同,则解压缩通常更快,因为涉及的计算工作较少。您的最坏情况估计可能与初始压缩时间相同。

但是,为了轻松获胜,我建议使用pigz,并行实现gzip利用多个处理器和内核。除非您只有一个可用的核心,pigz否则应该大大减少压缩和解压缩的时间。

样品用法tar

tar -c --use-compress-program=pigz -f data.tgz /path/to/data

有关更多示例,请参阅StackOverflow:使用多核进行tar + gzip / bzip压缩/解压缩


谢谢(你的)信息。我使用pigz进行压缩。不幸的是,我打算只压缩数据库一次,以便在许多其他服务器上复制它,因此解压缩是主要问题。Pigz似乎没有提供很多改进。
radschapur

@radschapur也许bzip2pbzip2(并行bzip)是一个更好的选择?对于以下bzip讨论,格式似乎更有利于并行解压缩:github.com/madler/pigz/issues/36
Stennie

0

在同一台机器上没有明确的比例,使用多台机器(不同类型)肯定会产生影响。压缩和解压缩主动涉及数据存储(例如,“硬盘驱动器”或“SSD”),处理器和诸如存储器的其他组件。

作为过度概括,解压缩非常快,甚至可能比复制未压缩的数据量更快。压缩也可以同样快,并且对于类似RLE压缩的东西,它可能是。对于zip和gzip,常见的实现比解压缩慢,如果你选择可能需要2-4倍长时间的更积极的压缩选项,你通常可以挤出另外5%-15%的压缩效率。

差异主要是因为压缩涉及一些测试(有时被认为是“猜测”),而一些测试没有结果。相反,减压通常只是遵循预先建立的过程,因此相对更快。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.