【问题标题】:Is there a advantage to storing a compressed file in the database将压缩文件存储在数据库中是否有优势
【发布时间】:2013-03-12 00:27:26
【问题描述】:

问题的背景。

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

所以我可以使用 PHP 的 gzcompress 存储压缩文本,并可能将文件大小减少到 70%,然后将其存储在 bytea 列中。但是手术真的值得吗?不是已经在 PostgrSQL 中使用 TOAST 压缩了 bytea,再增加一层压缩不会对数据大小产生显着影响吗?

【问题讨论】:

  • 您是否要节省磁盘空间?因为阅读时必须解压缩肯定会更昂贵。只要未选择该字段并且您仍然按主键查询,较大的文件不会影响查询时间。
  • 以什么方式值得?您是否正在为服务器上的空间而苦恼?
  • 试图节省磁盘空间。存储数据的列实际上是出于存档目的,因此很少被调用(比如每 3 个月一次)。

标签: php postgresql compression


【解决方案1】:

是和不是,这取决于您的应用程序。

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

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

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

因此,如果您有大量(例如,>10GB 左右)小块数据,那么可能值得自己压缩数据,但始终首先进行分析和基准测试!,否则不要打扰,让 PostgreSQL 来解决。

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2012-01-03
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多