MySQL vs PostgreSQL for Web Applications我正在使用Python(Django)开发Web应用程序,并且想知道在进行生产部署时MySQL还是PostgreSQL更合适。 乔尔(Joel)在一个播客中说,他在使用MySQL时遇到了一些问题,并且数据不一致。 我想知道有人是否有这样的问题。 此外,在性能方面可以轻松调整的内容吗?
致将来的读者注意:以下文本的最后编辑时间为2008年8月。截止本次编辑将近11年前。软件的版本可能会迅速变化,因此,在根据以下建议选择DBMS之前,请进行一些研究以查看其是否仍然正确。 更好? Web主机通常提供MySQL。 PostgreSQL是更成熟的产品。 此讨论旨在解决您的"更好"问题 显然,根据该网页,当并发访问级别低并且读取数多于写入数时,MySQL速度很快。另一方面,随着负载和写入/读取比的增加,它的可伸缩性较低。 PostgreSQL在低并发级别时相对较慢,但是在增加负载级别时可以很好地进行扩展,同时在并发访问之间提供足够的隔离度,以避免在高写入/读取比率时降低速度。它继续链接到许多性能比较,因为这些因素对条件非常敏感。 因此,如果您的决定因素是"哪个更快?"然后答案是"这取决于。如果确实很重要,请针对这两个应用程序进行测试。"而且,如果您真的很在乎,您会得到两个DBA(一个专门研究每个数据库),并让他们从数据库中调出废话,然后选择。好的DBA多么昂贵,这令人惊讶。他们值得每一分。 当它重要时。 它可能不会,所以只要选择您喜欢的声音的任何数据库并进行选择即可;可以通过更多的RAM和CPU,更合适的数据库设计以及巧妙的存储过程技巧等来获得更好的性能-对于所有随机网站X而言,这比苦恼MySQL或PostgreSQL更便宜和更容易,并通过昂贵的DBA进行专业调优。 乔尔还在那个播客中说,评论会再次被他咬住,因为人们会说MySQL只是一堆废话-乔尔无法获得
他还说:
有人说MySQL简单而快速。 快速-好吧,如果您使用默认的MyIsam存储引擎,则速度很快。它具有接近零的严重数据库功能,但速度很快。如果我很讽刺,我会说平面文件上的grep也很快。有趣的是,离MyIsam存储数据的距离并不远。因此,不要期望那里有任何关系数据库功能。甚至没有引用完整性约束。 简单-现在让我们说您想要真实数据库功能的相当一部分。诸如完整性约束,触发器,事务隔离,功能索引之类的东西可能吗?因此,显然,您必须让MyIsam引擎离开,并从其他3种主要存储引擎之一中进行选择。谁是由不同的供应商开发的,每个供应商都有特定的配置/行为。 查看存储引擎的概述,如果您不头痛,我同意从您的角度来看MySql很简单。 基于这些事实,我会让您想起那些说MySql既快速又简单的人。 如果您想扩展更多,节省时间,寻找更少的怪异错误,拥有更多简单的应用程序代码,花费更多时间优化业务,不与数据库打架,那么选择的开源解决方案就是Postgresql。 几个月后才开始鸣叫。 这两个数据库的地理能力非常非常不同。 PostgreSQL具有卓越的PostGIS扩展。相比之下,MySQL的地理功能几乎为零。 如果您的Web服务具有位置组件,请选择PostgreSQL。 我没有使用过Django,但是我同时使用了MySQL和PostgreSQL。如果您仅将数据库用作Django的后端,则没关系,因为它将抽象出大多数差异。 PostgreSQL具有更高的可扩展性(随着数据大小/客户端数量的增加,它无法像MySQL一样快地撞上墙)。 如果您使用的是新系统,那么真正的区别就来了。然后,我建议使用PostgreSQL,因为它具有许多功能,这些功能使您的数据库层更具可定制性,因此您可以将其微调到可能具有的任何要求。 我都广泛使用。我对特定项目的选择归结为:
通过特殊的调味料,我可以像:
尽管有些过时了,但值得阅读MySQL Gotchas页面。据我所知,这里列出的许多项目仍然是真实的。 我使用PostgreSQL。 好吧,我认为您不应该在过去的开发(构建,暂存,生产)中使用任何其他数据库品牌,因为这会再次咬住您。 根据我的理解,PostgreSQL是更"正确"的数据库实现,而mySQl的正确性较差(合规性较差),但速度更快。 因此,如果您几乎要编写CRUD应用程序,那您就要走mySQL了。如果您需要数据库中的某些功能(如果不确定,则不需要),则可能需要研究postgreSQL。 @沃尔夫曼龙 PostgreSQL对对象有微小的支持,但从本质上来说,它是一个关系数据库。从其关于页面:
谢谢。我已经将Django与MySQL配合使用,这很好。在所需功能上选择数据库。很难比较MySQL和Postgres。最好将Postgress与SQl Server进行比较。 如果您正在编写一个可能在不同服务器上大量分发的应用程序,则由于可移植性,MySQL比PostgreSQL具有很大的分量。在不令人满意的网络主机上很难找到PostgreSQL,尽管有一些。在大多数方面,PostgreSQL比MySQL慢,特别是在最终进行微调时。总而言之,我想给PostgreSQL一个短时间的机会,那样您就不会完全避免它,然后做出判断。
MySQL是关系数据库管理系统,而PostgreSQL是对象关系数据库管理系统。 PostgreSQL非常适合C ++或Java开发人员,因为它使我们能够更好地控制查询的编写方式。 ORDBMS还为我们提供了对象和用户定义类型。 SQL查询本身比MySQL更接近ISO标准。 |