加快 gzip 压缩速度

加快 gzip 压缩速度

是否可以加快这个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

答案1

如果你有一个多核机器使用猪猪比传统的 gzip 快得多。

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

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

使用 Pigz 命令行变成

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

答案2

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 。

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

相关内容