【问题标题】:MySQL vs PostgreSQL for Web Applications [closed]用于 Web 应用程序的 MySQL vs PostgreSQL [关闭]
【发布时间】:2010-09-06 20:18:46
【问题描述】:

我正在使用 Python (Django) 开发一个 Web 应用程序,并且想知道 MySQL 还是 PostgreSQL 在部署到生产环境时更适合。

在一个podcastJoel 中说他在使用 MySQL 时遇到了一些问题,并且数据并不一致。

我想知道是否有人遇到过此类问题。还谈到可以轻松调整的性能?

【问题讨论】:

    标签: mysql postgresql


    【解决方案1】:

    致未来读者的注意事项:以下文字的最后一次编辑是在 2008 年 8 月。截至本次编辑,这已经是近 11 年前的事了。软件可以在版本之间快速变化,因此在根据以下建议选择 DBMS 之前,请先进行一些研究,看看它是否仍然准确。 在下面查看更新的答案。


    更好?

    Web 主机更常提供 MySQL。

    PostgreSQL 是一个更加成熟的产品。

    this discussion addressing your "better" question

    显然,根据this web page,当并发访问级别较低且读多于写时,MySQL 速度很快。另一方面,随着负载和写入/读取比率的增加,它表现出低可扩展性。 PostgreSQL 在低并发级别相对较慢,但随着负载级别的增加可以很好地扩展,同时在并发访问之间提供足够的隔离以避免在高写入/读取比率下的减速。它继续链接到许多性能比较,因为这些东西对条件非常...敏感。

    因此,如果您的决定因素是“哪个更快?”那么答案是“这取决于。如果真的很重要,请针对两者测试您的应用程序。”如果你真的非常关心,你可以找两个 DBA(一个专门研究每个数据库的人),让他们调整数据库中的垃圾,然后选择。令人惊讶的是,优秀 DBA 的成本如此之高。 它们物有所值

    重要的时候。

    它可能不会,所以只需选择您喜欢的数据库并使用它;更好的性能可以通过更多的 RAM 和 CPU、更合适的数据库设计、巧妙的存储过程技巧等等来获得——所有这些对于 random-website-X 来说都比选择 MySQL 或 PostgreSQL 更便宜、更容易,以及来自昂贵 DBA 的专家调优。


    Joel 还在那个播客中说,评论会回来咬他,因为人们会说 MySQL 是一坨屎——Joel 无法得到 count 的行数。轶事的复数不是数据。 He said:

    在我的职业生涯中,MySQL 是我编写过的唯一一个存在数据完整性问题的数据库,您在其中进行查询并得到无意义的答案,这是不正确的。

    他还说:

    这只是一个轶事。这就是让我感到沮丧的事情之一,实际上,关于博客或一般的互联网。 ...

    【讨论】:

    • 还有一点是,如果你使用框架,你也许可以从数据库中抽象出你的代码,这样你就可以轻松切换。
    • "哪个更快?" .取决于你想要什么,如果你想要符合 ACID 的数据库,请阅读:randombugs.com/linux/mysql-postgresql-benchmarks.html
    • 也值得注意。 MySQL 由甲骨文拥有。因此,它永远不会被允许与他们的付费产品竞争。
    【解决方案2】:

    几个月后才响起。

    两个数据库的地理功能非常非常不同。 PostgreSQL 具有特殊的 PostGIS 扩展。相比之下,MySQL 的地理功能几乎为零。

    如果您的网络服务有定位组件,请选择 PostgreSQL。

    【讨论】:

      【解决方案3】:

      我没有用过 Django,但是我用过 MySQL 和 PostgreSQL。如果您将数据库仅用作 Django 的后端,那没关系,因为它将抽象出大部分差异。 PostgreSQL 的可扩展性更强一些,因为它不会像 MySQL 那样随着数据大小/客户端数量的增加而快速突破。

      真正的区别在于如果您正在开发一个新系统。然后我会推荐 PostgreSQL,因为它有更多的特性可以让你的 DB 层更加可定制,这样你就可以根据你可能有的任何要求对其进行微调。

      【讨论】:

        【解决方案4】:

        虽然有点过时,但值得一读MySQL Gotchas 页面。据我所知,其中列出的许多项目仍然是真实的。

        我使用 PostgreSQL。

        【讨论】:

        • 还是这样吗?
        【解决方案5】:

        我都广泛使用。我对特定项目的选择归结为:

        • 许可 - 您是否要分发您的应用 (IANAL)
        • 现有基础架构和知识库
        • 您必须拥有的任何特殊酱汁

        特制酱料我的意思是:

        • 简单/廉价的复制 = MySQL
        • 小结果的大数据集问题 = PostgreSQL。使用语言扩展,并有非常高效的数据操作。 (PL/Python、PL/TCL、PL/Perl 等)
        • 与 R 统计库的接口 = PostgreSQL PL/R 在 debian/ubuntu 中可用

        【讨论】:

        • Postgres 也有简单/廉价的复制。它只是不是内置,因为有六个可供选择,每个都有自己好的和坏的部分。因此,您可以为 MySQL 选择 一个 平庸的复制,或为 PostgreSQL 选择众多复制之一。您的选择。
        • PostgreSQL 9.0+ 有内置的二进制 WAL 复制,非常容易设置。
        【解决方案6】:

        好吧,我认为您不应该在过去的任何开发(构建、暂存、生产)中使用不同的数据库品牌,因为那样会反过来影响您。

        根据我的理解,PostgreSQL 是一个更“正确”的数据库实现,而 mySQl 不太正确(不太合规)但速度更快。

        因此,如果您正在编写一个 CRUD 应用程序,那么 mySQL 就是您要走的路。如果您需要数据库中的某些功能(如果您不确定则不需要),那么您可能需要研究 postgreSQL。

        【讨论】:

          【解决方案7】:

          如果您正在编写一个可能在不同服务器上分布相当多的应用程序,由于可移植性,MySQL 比 PostgreSQL 具有很大的权重。在不太令人满意的网络主机上很难找到 PostgreSQL,尽管有一些。在大多数方面,PostgreSQL 都比 MySQL 慢,尤其是在最后进行微调时。总而言之,我会说在短时间内给 PostgreSQL 一个机会,这样你就不会完全避免它,然后再做出判断。

          【讨论】:

          • 我同意你的观点,更多低质量的网络主机应该提供选择,而不是把 MySQL 推到我们面前。但是,当使用共享主机时,无论如何,您都会受到它们的摆布。所以 DBM 的选择并不重要。
          【解决方案8】:

          谢谢。我已经将 Django 与 MySQL 一起使用,这很好。根据您需要的功能选择您的数据库。很难比较 MySQL 和 Postgres。最好将 Postgress 与 SQL Server 进行比较。

          【讨论】:

            【解决方案9】:

            @WolfmanDragon

            PostgreSQL 对对象有(微小的)支持,但它本质上是一个关系数据库。来自其about page

            PostgreSQL 是一个功能强大的开源关系数据库系统。

            【讨论】:

            • 对象关系数据库管理系统 ISA 关系数据库管理系统。如果您进一步阅读 PostgSQL 文档,您会发现 PostgSql 是一个 ORDBMS。也许您将 ORDBMS 与 ODBMS(如 Objectivity/DB)混淆了。
            【解决方案10】:

            MySQL 是 relational database management system,而 PostgreSQL 是 object-relational database management system。 PostgreSQL 非常适合 C++ 或 Java 开发人员,因为它让我们可以更好地控制查询的编写方式。 ORDBMS 还为我们提供了对象和用户定义类型。 SQL 查询本身比 MySQL 更接近 ISO 标准。
            您需要 ORDBMS 还是 RDBMS?这将更好地回答你的问题。

            【讨论】:

            • 这有点过于简单化了。仅仅因为您不需要 ORDBMS 并不一定意味着您必须使用 MySQL。还有其他更显着的差异,不是吗?
            • 你是对的。我尽量不要听起来像一个 PostgreSQL 推动者。除非设计需要真正的对象数据库,否则我认为没有真正的理由使用 PostgreSQL 以外的任何东西。除了更多人熟悉它之外,我认为 MySQL 没有任何意义。
            猜你喜欢
            • 2016-02-17
            • 1970-01-01
            • 2015-07-25
            • 2012-04-16
            • 1970-01-01
            • 2014-04-08
            • 1970-01-01
            • 2010-10-01
            • 2011-03-28
            相关资源
            最近更新 更多