在PostgreSQL中存储文件是否存在性能问题? [英] Are there performance issues storing files in PostgreSQL?

查看:35
本文介绍了在PostgreSQL中存储文件是否存在性能问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在PostgreSQL中将HTML页面、图像、PDF等文件存储在表中是否正常,还是速度慢?我看到一些文章说这是不推荐的,但我不知道是不是真的。

我心目中的列类型是BLOB(据我所知它存储在文件中)或bytea类型,但其他类型也适用。

推荐答案

您基本上有两个选择。您可以将数据直接存储在行中,也可以使用大型对象工具。由于PostgreSQL现在使用名为TOAST的东西将大型字段移出表,因此直接在行中存储大型数据应该不会对性能造成影响。字段大小仍有1 GB的限制。如果这太有限,或者如果您需要流API,您可以使用大对象工具,它为您提供了更多类似于数据库中的文件描述符。您将LO ID存储在列中,并且可以从该ID读取和写入。

我个人建议您避免使用大型对象工具,除非您绝对需要它。在Toast中,大多数用例只需按照您预期的方式使用数据库即可。对于大型对象,您会给自己带来额外的维护负担,因为您必须跟踪您使用过的LOID,并确保在它们不再使用时(但不是以前)取消它们的链接,否则它们将永远位于您的数据目录中,占据空间。还有很多工具在它们周围有异常行为,我不知道它们的细节,因为我从来没有使用过它们。

对于大多数人来说,在数据库中存储大数据带来的巨大性能损失是,除非您特别指示不要这样做,否则您的ORM软件将在每个查询中提取大数据。您应该注意告诉Hibernate或您正在使用的任何东西来将这些列视为大列,并且仅在明确请求它们时才获取它们。

这篇关于在PostgreSQL中存储文件是否存在性能问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆