将压缩文件存储在数据库中是否有优势

Dev*_*xon 5 php compression postgresql

关于这个问题的背景.

  • 数据库是PostgreSQL 9.1
  • 数据是大量文本(网页标记语言)
  • 该列是bytea

所以我可以使用PHP的gzcompress存储压缩文本,并可能将文件大小减少高达70%,然后将其存储在bytea列中.但这项手术真的值得吗?是不是已经使用TOAST在PostgrSQL中压缩了bytea,并且添加另一层压缩不会对数据的大小产生重大影响?

Dai*_*Dai 3

是或否,这取决于您的应用程序。

RE: TOAST,根据 PostgreSQL 的文档压缩(使用 LZ),它们仅在文本大于 2KiB 阈值时才调用压缩。

因此,如果您存储的 HTML 小于 2KiB,那么您可能值得自己进行压缩,尽管在这种情况下我不会打扰,因为现在大多数 HTML 文档往往至少为 10KiB,并且在您的应用程序层中实现压缩看起来很麻烦,并且使您的数据不易移植。在 PHP 中执行此操作还会对性能产生非常明显的影响。

但是,如果您要存储一个非常大的网络论坛的存档,例如,其中 HTML 平均小于 2KiB,但数量很多(某些论坛的帖子计数达到数百亿),那么无论如何,压缩数据都是一个很好的例子。

因此,如果您有大量(如 >10GB 左右)小数据片段,那么您自己压缩数据可能是值得的,但始终首先进行分析和基准测试!,否则就别费心了,让 PostgreSQL 来解决吧。