gue*_*tli 37 postgresql performance gzip
我正在运行这个命令:
pg_dumpall | bzip2 > cluster-$(date --iso).sql.bz2
Run Code Online (Sandbox Code Playgroud)
这需要太长时间。我用top. bzip2 进程占用一个内核的大约 95% 和 postgres 的 5%。该wa条目是低的。这意味着磁盘不是瓶颈。
我可以做些什么来提高性能?
也许让 bzip2 使用更多的内核。服务器有 16 个内核。
或者使用 bzip2 的替代品?
我可以做些什么来提高性能?
mar*_*elm 64
有许多压缩算法,并且bzip2是较慢的算法之一。平原gzip往往要快得多,通常压缩不会差很多。当速度最重要时,lzop是我的最爱。压缩很差,但是太快了。
我决定找点乐子,比较一些算法,包括它们的并行实现。输入文件是pg_dumpall我工作站上命令的输出,一个 1913 MB 的 SQL 文件。硬件是较旧的四核 i5。时间只是压缩的挂钟时间。并行实现设置为使用所有 4 个内核。按压缩速度排序的表。
Algorithm Compressed size Compression Decompression
lzop 398MB 20.8% 4.2s 455.6MB/s 3.1s 617.3MB/s
lz4 416MB 21.7% 4.5s 424.2MB/s 1.6s 1181.3MB/s
brotli (q0) 307MB 16.1% 7.3s 262.1MB/s 4.9s 390.5MB/s
brotli (q1) 234MB 12.2% 8.7s 220.0MB/s 4.9s 390.5MB/s
zstd 266MB 13.9% 11.9s 161.1MB/s 3.5s 539.5MB/s
pigz (x4) 232MB 12.1% 13.1s 146.1MB/s 4.2s 455.6MB/s
gzip 232MB 12.1% 39.1s 48.9MB/s 9.2s 208.0MB/s
lbzip2 (x4) 188MB 9.9% 42.0s 45.6MB/s 13.2s 144.9MB/s
pbzip2 (x4) 189MB 9.9% 117.5s 16.3MB/s 20.1s 95.2MB/s
bzip2 189MB 9.9% 273.4s 7.0MB/s 42.8s 44.7MB/s
pixz (x4) 132MB 6.9% 456.3s 4.2MB/s 7.9s 242.2MB/s
xz 132MB 6.9% 1027.8s 1.9MB/s 17.3s 110.6MB/s
brotli (q11) 141MB 7.4% 4979.2s 0.4MB/s 3.6s 531.6MB/s
Run Code Online (Sandbox Code Playgroud)
如果您的服务器的 16 个内核足够空闲,所有内核都可以用于压缩,pbzip2则可能会给您带来非常显着的加速。但是您仍然需要更高的速度,并且您可以容忍大约 20% 的文件,gzip这可能是您最好的选择。
更新:我brotli在表格中添加了(参见 TOOGAMs 答案)结果。brotli小号压缩质量设置对压缩率和速度非常大的影响,所以我添加三个设置(q0,q1,和q11)。默认是q11,但它非常慢,而且仍然比xz. q1不过看起来很不错;与 相同的压缩比gzip,但速度是 4-5 倍!
更新:新增lbzip2(见gmathts评论)和zstd(约翰尼的评论)表中,并通过压缩速度来分类的。以高压缩比压缩三倍,lbzip2让bzip2家人重新投入使用pbzip2!zstd看起来也很合理,但brotli (q1)在比率和速度上都被击败了。
我最初的结论是简单gzip是最好的选择,这开始看起来几乎是愚蠢的。虽然无处不在,但它仍然无法被击败;)
Tho*_*mBR 40
使用 pbzip2。
该手册说:
pbzip2 是 bzip2 块排序文件压缩器的并行实现,它使用 pthreads 并在 SMP 机器上实现接近线性的加速。此版本的输出与 bzip2 v1.0.2 或更新版本完全兼容(即:任何用 pbzip2 压缩的东西都可以用 bzip2 解压)。
它会自动检测您拥有的处理器数量并相应地创建线程。
一些数据:
Brotli、Deflate、Zopfli、LZMA、LZHAM 和 Bzip2 压缩算法的比较
CanIUse.com:功能:brotli显示 Microsoft Edge、Mozilla Firefox、Google Chrome、Apple Safari、Opera(但不支持 Opera Mini 或 Microsoft Internet Explorer)的支持。
比较:Brotli vs deflate vs zopfli vs lzma vs lzham vs bzip2
你没有提到操作系统。如果是 Windows,带有 ZStandard (Releases)的 7-Zip 是 7-Zip 的一个版本,它经过修改以提供对使用所有这些算法的支持。