2011-03-07 62 views
1

我有一个应用程序,我很快将做一个重要的重写,它将大量的瞬态斑点存储在数据库中。应用程序将在每天的过程中插入并删除大量的斑点(每个斑点最多5MB)。目前,该应用程序使用非常旧的PostgreSQL版本(7.3.x)。使用这个版本的PostgreSQL,我们必须定期运行外部真空处理来控制数据库的大小,另外这个过程需要关闭应用程序才能正常运行。PostgreSQL vs MySQL用于处理插入/删除大量的斑点

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

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

感谢

回答

1

的Postgres 7.x中确实是一个重大的PITA当谈到吸尘。 9.0是lot这方面比较好。 autovacuum守护进程可以在每个表的级别上进行配置,因为我认为8.3,对于所描述的场景,您可能会对该表格(或涉及多个表格的表格)采取非常积极的措施。

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

问题在于有多少行(占行总数的百分比),您在表中删除/更新,而不是每个blob有多大。尽管我喜欢PostgreSQL,但我不得不承认,整个真空主题(即使每个版本变得更容易和更容易)仍然是其最薄弱的一点(以及很多麻烦的来源)。

我无法对MySQL做任何说法,因为我从未在生产环境中使用它。与你相比,其他功能(旁边的斑点)重要的足以让我远离MySQL - 如果它仅用于许可证。

+1

感谢您的信息。我读过一些关于自动清理能力的内容。我不会考虑任何需要配置'TOAST'表的过程。 – Michael 2011-03-07 19:59:17

+0

其实我不确定是否需要为TOAST表格配置它,但它可能是可能的 – 2011-03-07 20:25:49