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

时间:2013-03-12 00:27:27

标签: php postgresql compression

问题的背景。

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

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

1 个答案:

答案 0 :(得分:3)

是和否,这取决于您的申请。

RE:TOAST,according to PostgreSQL's documentation压缩(使用LZ),只有当文本大于2KiB的阈值时,它们才会调用压缩。

因此,如果您存储的HTML小于2KiB,那么进行自己的压缩可能是值得的,尽管在这种情况下我不会打扰,因为大多数HTML文档往往至少需要10KiB,并且实现压缩您的应用程序层似乎很麻烦,使您的数据不那么便携。从PHP中进行操作也有非常真实的性能。

但是,如果你正在为一个非常大的网络论坛存储一个档案,例如,HTML的平均值不到2KiB,但是它有很多(一些论坛有几十个后载)数十亿)那么无论如何压缩数据都是非常好的。

因此,如果您有很多(例如,大约10GB左右)的小块数据,那么自己压缩数据可能是值得的,但始终首先进行配置和基准测试!,否则不要打扰,让PostgreSQL整理出来。