
私は、mongodb (~500GB) のバックアップを .tar.gz アーカイブに圧縮していますが、これには数時間かかります。テスト目的で、そのデータベースを別のマシンにバックアップしようとしていますが、マシンごとにかかる時間を見積もっていただきたいです。
私の質問は、圧縮にかかった時間に基づいて、アーカイブの解凍にかかる時間を見積もる方法はあるでしょうか?
ありがとう
答え1
圧縮と解凍の標準的な比率はわかりません。これは、データとサーバーのリソースによって大きく左右されるからです。他のすべてのリソースが同じであると仮定すると、一般的に解凍の方が計算作業が少なくなるため高速になります。最悪の場合の推定値は、最初の圧縮時間と同じになる場合があります。
しかし、簡単に勝つためには、pigz
複数のプロセッサとコアを活用する並列実装gzip
。使用可能なコアが 1 つしかない場合を除き、pigz
圧縮と解凍の両方にかかる時間が大幅に短縮されます。
使用例tar
:
tar -c --use-compress-program=pigz -f data.tgz /path/to/data
その他の例については、StackOverflow: tar+gzip/bzip 圧縮/解凍にマルチコアを活用する。
答え2
同じマシン上では明確な比率はなく、複数のマシン (異なるタイプ) を使用すると確実に影響が出る可能性があります。圧縮と解凍には、データ ストレージ (「ハード ドライブ」や「SSD」など)、プロセッサ、メモリなどのその他のコンポーネントが積極的に関与します。
過度に一般化すると、解凍は非常に高速で、圧縮されていないデータの量をコピーするよりも高速になることもあります。圧縮も同様に高速で、RLE 圧縮などでは高速になることがあります。zip および gzip の場合、一般的な実装は解凍よりも遅く、2 ~ 4 倍の時間がかかる可能性のあるより積極的な圧縮オプションを選択すると、さらに 5% ~ 15% の圧縮効果を引き出すことができます。
違いは主に、圧縮には何らかのテスト(「推測」と考えられることもあります)が含まれ、一部のテストは役に立たないことです。対照的に、解凍は通常、事前に確立されたプロセスに従うだけなので、比較的早く完了します。