【问题标题】:PostgreSQL vs MySQL for handling inserting/deleteing large quanties of blobs用于处理插入/删除大量 blob 的 PostgreSQL 与 MySQL
【发布时间】:2011-03-07 17:58:13
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: mysql postgresql blobs


    【解决方案1】:

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

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

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

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

    我不能说关于 MySQL 的任何事情,因为我从未在生产环境中使用过。与您相比,其他功能(除了 blob)足够重要,我可以远离 MySQL - 如果它只是为了许可证。

    【讨论】:

    • 感谢您的信息。我读过一些关于自动真空的能力。我不会考虑需要为“TOAST”表配置流程。
    • 其实我不确定是否需要为 TOAST 表配置它,但很可能
    猜你喜欢
    • 2015-09-29
    • 2019-09-07
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2021-12-07
    • 1970-01-01
    相关资源
    最近更新 更多