加快gzip压缩


15

是否可以加快gzip流程?

我在用着

mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz

将数据库备份到目录中$BACKUP_DIR

联机帮助页上说:

-#--fast --best
使用指定的数字#调节压缩速度,其中-1或--fast表示最快的压缩方法(较少压缩),而-9或--best表示最慢的压缩方法(最佳压缩)。默认压缩级别为-6(即,偏向于高压缩,而牺牲了速度)。

  • 使用效果如何--fast
  • 这是否有效降低了现代计算机上的CPU使用率?

我的测试结果

我没有注意到任何加速:

  • 7分47秒(默认比率-6
  • 8分36秒(比率--fast(= 9))

因此,使用快速压缩似乎需要更长的时间?

只有更高的压缩率才能真正减慢速度:

  • 11分57秒(比率--best(= 1))

获得创意之后,lzop我也进行了测试,它确实更快:

  • 6分钟14秒 lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo


您是否担心CPU时间或整体(时钟)时间?--best为9,-fast为1。
StéphaneChazelas 13年

3
如果gzip -1不够快,使用lzop
斯特凡Chazelas

1
还有lz4一个甚至更快地看到此基准。但是看来lzop和lz4需要更多的内存。在我的1GB RAM单核上,当我压缩一些大型数据库时,lz4在压缩时使用的内存是gzip的30倍是否会成为问题?
rubo77

lz4不需要那么多的内存。如果使用的是lz4c实用程序,则几乎所有内存都分配给I / O缓冲区。您可以通过使用较小的缓冲区(对于64KB缓冲区,选项-B4)来减少该数量。由于较小的缓冲区也意味着较差的压缩,因此启用链接块压缩(选项-BD)很有用。参见:fastcompression.blogspot.fr/2013/08/…–
Cyan

Answers:


19

如果您拥有使用Pigz的多核计算机,则它比传统gzip快得多。

Pigz代表gzip的并行实现,是gzip的全功能替代品,它在压缩数据时利用多个处理器和多个内核。pigz由Mark Adler编写,使用zlib和pthread库。

Pigz可以用作gzip的替代品。注意,只有压缩可以并行化,而不能解压缩。

使用Pigz,命令行变为

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz

这还会加快单核的进程吗?
rubo77

@ rubo77-否,这无法在多个内核之间实现压缩。
slm

pigz增加了CPU的使用率,但降低了时钟时间花费在多处理器
斯特凡Chazelas

确实,这通常是所需要的。通常,gzip压缩(取决于硬件)受CPU限制(单线程性能),而Pigz压缩通常受IO限制。
Marco Marco

5

来自man gzip

   -# --fast --best
          Regulate  the  speed  of compression using the
          specified digit #, where -1  or  --fast  indi‐
          cates  the  fastest  compression  method (less
          compression) and -9 or  --best  indicates  the
          slowest compression method (best compression).
          The default compression level is -6 (that  is,
          biased  towards high compression at expense of
          speed).

3

如果由于数据库锁定问题而需要快速存储,并且具有足够大的磁盘来容纳暂时未压缩的数据,则可以考虑使用此方法:

mysqldump "$database_name" > "$BACKUP_DIR"/"$database_name".sql
nice gzip "$BACKUP_DIR"/"$database_name".sql &

即首先存储备份(如果磁盘速度快而CPU速度慢,则比gzip压缩快),然后在后台进行gzip压缩。

这也可能使您可以使用更好的压缩算法,因为不再重要(直接)压缩需要多长时间。

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.