我正在使用Python(Django)开发Web应用程序,想知道在生产环境中部署时选择MySQL还是PostgreSQL更适合。
在一个播客中,Joel说他在MySQL上遇到了一些问题,数据不一致。
我想知道是否有人遇到过这样的问题。此外,在性能方面,哪个更容易调整?
我正在使用Python(Django)开发Web应用程序,想知道在生产环境中部署时选择MySQL还是PostgreSQL更适合。
在一个播客中,Joel说他在MySQL上遇到了一些问题,数据不一致。
我想知道是否有人遇到过这样的问题。此外,在性能方面,哪个更容易调整?
给未来的读者的一条注:下面的文本最后一次编辑是在2008年8月,距今已经近11年了。软件版本之间的差异变化很快,因此在根据以下建议选择数据库管理系统之前,请进行一些研究,以确定其是否仍然准确可行。请查看下面的更新答案。
更好了吗?
MySQL是Web主机提供的更常见的数据库管理系统。
PostgreSQL是一个更成熟的产品。
显然,根据这个网页,当并发访问水平较低,并且读远多于写时,MySQL速度非常快。另一方面,随着负载和读写比例的增加,MySQL表现出较低的可扩展性。PostgreSQL在低并发级别下相对较慢,但在负载水平增加时具有良好的可扩展性,并提供足够的并发访问隔离,以避免高写入/读取比率时的减速。它还链接到许多性能比较,因为这些东西非常......敏感于条件。
因此,如果你的决策因素是 "哪个更快?" 那么答案是 "要看情况。 如果真的很重要,请针对两者测试你的应用程序。" 如果你真的非常关心,你需要找来两个数据库管理员(一个专门针对每个数据库)彻底地进行优化,然后选择。好的DBA的价格惊人昂贵;但是,他们每一分钱都值得。
在重要时才这样做。
这可能并不重要,所以只需选择你喜欢的数据库并开始使用;更好的性能可以通过更多的RAM和CPU、更适合的数据库设计、聪明的存储过程技巧等来获得 - 对于随机的网站X而言,所有这些都比纠结于选择MySQL或PostgreSQL以及来自昂贵的DBA的专业调优更便宜更容易。
count
。 "anecdote" 的复数形式不是 "data"。他在 这里说:
MySQL 是我职业生涯中唯一一个存在数据完整性问题的数据库,你查询数据却得到错误的无意义结果。
他也说:
这只是个轶事(anecdote),这是使我感到沮丧的事情之一。事实上,在博客或互联网上有一种奇怪的倾向,把轶事当成真相。作为一个博客作者,我开始对此感到有点内疚。
数月后跟进:
这两个数据库的地理空间功能非常不同。PostgreSQL拥有卓越的PostGIS扩展程序,而MySQL相比之下几乎没有地理空间功能。
如果您的 Web 服务涉及位置组件,请选择 PostgreSQL。
我没有使用过Django,但我曾经使用过MySQL和PostgreSQL。如果你只是将数据库用作Django的后端,则大多数区别都将被抽象掉,因此并不重要。随着数据大小和客户端数量的增加,PostgreSQL比MySQL更具可扩展性。
真正的区别在于如果你是在做一个新系统。那么我强烈推荐使用PostgreSQL,因为它拥有更多功能,可以使你的数据库层更加可定制,以便你可以根据任何需求进行微调。
我广泛使用两种数据库。在选择特定项目时,我的考虑因素如下:
通过 特殊功能,我指的是以下内容:
虽然有点过时,但是阅读MySQL Gotchas页面仍然值得。在我看来,那里列出的许多项目仍然是真实的。
我使用PostgreSQL。
嗯,我认为在开发(构建、暂存、生产)之后的任何地方都不应该使用不同的数据库品牌,因为这会让你付出代价。
据我理解,PostgreSQL是一种更“正确”的数据库实现,而mySQL则不太正确(不太兼容),但速度更快。
因此,如果您几乎编写了一个CRUD应用程序,则应选择mySQL。如果您需要从数据库中获取某些功能(如果您不确定,则不需要),则可以考虑使用postgreSQL。
如果您正在编写一个可能会在不同服务器上分发的应用程序,MySQL因其可移植性而比PostgreSQL更具有优势。尽管有一些不太令人满意的Web主机提供了PostgreSQL,但它很难找到。在大多数方面,PostgreSQL比MySQL慢,特别是当涉及到最终的微调时。总的来说,我建议您尝试使用PostgreSQL一段时间,这样您就不会完全避免它,然后再做出判断。
谢谢。我已经使用Django和MySQL,效果很好。根据您需要的功能选择您的数据库。很难比较MySQL和Postgres,最好将Postgres与SQL Server进行比较。
MySQL是一种关系型数据库管理系统,而PostgreSQL是一种对象-关系型数据库管理系统。PostgreSQL非常适合C++或Java开发人员,因为它可以更好地控制查询的编写方式。ORDBMS还为我们提供了对象和用户定义类型。SQL查询本身比MySQL更接近ISO标准。
你需要一个ORDBMS还是RDBMS?这将更好地回答你的问题。