是否可以加快这个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 。
这也可能允许您使用更好的压缩算法,因为(直接)压缩需要多长时间不再重要。