1

我有一个应用程序,我很快将对其进行重大重写,该应用程序在数据库中存储了大量的瞬态 blob。该应用程序将在每天的过程中插入和删除大量 blob(每个最大 5mb)。目前,该应用程序使用一个非常旧的 PostgreSQL 版本(7.3.x)。使用此版本的 PostgreSQL,我们必须定期运行外部清理进程以控制数据库大小,此外,此进程需要关闭应用程序才能正常运行。

我们正在考虑升级到最新的 PostgreSQL 或迁移到另一个数据库。具体来说,我们对迁移到 MySQL 很感兴趣。我想知道这里是否有人熟悉这些服务器最新版本的 blob 处理支持,并提供任何建议,说明哪一个对于将不断插入和删除 blob 的应用程序可能表现最佳。两台服务器之间的其他功能差异对我们来说不是问题。

我做了一些研究,发现了 MySQL 和 PostgreSQL 之间的大量功能比较,但没有真正解决这个问题。我希望这里的某个人可能对一个或两个数据库系统的这方面有一些经验。

谢谢

4

1 回答 1

1

Postgres 7.x 在真空吸尘方面确实是一个主要的 PITA。9.0在这方面好得多。自我认为 8.3 以来,autovacuum 守护程序可以在每个表级别上进行配置,对于所描述的场景,您可能会使其对该表(或如果涉及多个表)非常激进。

我认为是否删除带有 BLOB(即bytea)列的行并不重要。特别是因为无论如何 blob 都是离线存储的(您可能还需要为所谓的 TOAST 表配置自动真空守护程序,但我不确定)

问题是您在表中删除/更新了多少行(占总行的百分比),而不是每个 blob 有多大。

尽管我很喜欢 PostgreSQL,但我不得不承认整个真空主题(尽管每个版本都变得越来越容易)仍然是它的弱点之一(也是很多麻烦的根源)。

由于我从未在生产环境中使用过 MySQL,所以我不能说什么。与您相比,其他功能(除了 blob)对我来说足够重要,可以远离 MySQL - 如果它只是为了许可证。

于 2011-03-07T18:25:42.683 回答