5

問題の背景。

  • データベースは PostgreSQL 9.1 です
  • データは大量のテキスト (Web ページのマークアップ言語)
  • コラムはバイティー

そのため、PHP の gzcompress を使用してテキストを圧縮して保存し、ファイル サイズを最大 70% まで縮小して、bytea 列に保存することができます。しかし、その手術は本当に価値があるのでしょうか? bytea は TOAST を使用して PostgrSQL で既に圧縮されていませんか?圧縮の別のレイヤーを追加しても、データのサイズに大きな影響はありませんか?

4

1 に答える 1

3

はい、いいえ、それはアプリケーションによって異なります。

RE: TOAST は、PostgreSQL のドキュメントの圧縮 (LZ を使用) によると、テキストが 2KiB のしきい値より大きい場合にのみ圧縮を呼び出します。

したがって、格納している HTML が 2KiB 未満の場合は、独自の圧縮を行う価値があるかもしれませんが、この場合、最近のほとんどの HTML ドキュメントは少なくとも 10KiB になる傾向があるため、アプリケーション層で圧縮を実装する必要はありません。問題のように思われ、データの移植性が低下します。また、PHP 内から実行すると、非常に大きなパフォーマンス ヒットが発生します。

ただし、たとえば、HTML が平均で 2KiB 未満になる非常に大規模な Web フォーラムのアーカイブを保存している場合、それは大量に存在します (一部のフォーラムでは投稿数が数千億に達します)。関係なく、データを圧縮することには非常に良いケースがあります。

そのため、小さなデータが大量にある場合 (10GB 以上など)、自分でデータを圧縮する価値はあるかもしれませんが、常に最初にプロファイリングとベンチマークを行います。、それ以外の場合は気にせず、PostgreSQL に整理させてください。

于 2013-03-12T00:55:20.787 に答える