这些天来,似乎每个人都会 Select MySQL,因为这正是每个人都会 Select 的.我正在开发一个Web应用程序,它将处理大量传入数据,我想知道我是应该"只使用MySQL",还是应该考虑一下其他开源数据库,甚至是商业数据库?

编辑:应该提到的,我正在寻找最佳性能,与Debian 5上运行的Ruby + Rails集成,钱是紧的,但如果从长远来看,这将节省资金,我会考虑投资到更昂贵的东西.

推荐答案

我以前发布过这个,但我没有理由改变这个建议:

MySQL更容易开始使用.

更好的UI工具.更快,如果你不用酸的话.对无效数据的容忍度更高.自动增量列与键入自动增量一样简单.权限不同于文件系统和操作系统用户.在编写存储过程时,设置分隔符比使用PG的"美元符号引号"更容易.在MySQL中,您可以连接到所有数据库,而不是一次只连接一个数据库.

Postgres(PG)更符合标准,但它更丑陋、更复杂,尤其是从用户界面的Angular 来看.它过go 需要手动吸尘,实际上加强了引用完整性(这是一件很好的事情,可能会让人感到痛苦).Autoincrement更灵活,但需要序列(可以用串行方式屏蔽),等等,什么是OID?

因此,如果您不太了解或不太关心数据库、数据有效性、ACID遵从性等,但是您确实关心易用性和速度,那么您倾向于使用MySQL.

太多(不是全部,但很多)"Web程序员"对"Web2.0"、PHP或Java了解很多,但对数据库理论或实践("索引?那是什么?")知之甚少.他们往往认为数据库只是一个花哨的哈希表或一包数据,实际上,它在任何地方都不像哈希表那样具有动态可变性或容错性.

对于这些人来说,MySQL是天赐之物,因为在5.0之前,它还不是一个真正的RDBMS,在很多方面仍然不是.它比竞争对手"更快",而且不会在"深奥"的数据库上"浪费时间",而这些东西是Web程序员不想要、不理解或看不到的价值.

另一方面,对于有数据库背景的人来说,MySQL是一个雷区:应该工作的东西(复杂的视图、分组、分组中的排序)可能会工作,或者如果幸运的话,可能会导致服务器崩溃,或者如果不幸运的话,只给出错误数据的结果.

我已经花了几天的时间来处理其中的一些事情,无可否认,这些事情并不是特别复杂的视图和分组方式,这是很复杂的.

而且MySQL并不是真的更快.如果您使用InnoDb表进行ACID(或者仅仅因为超过3000万行,MyISAM表往往会变得很糟糕),是的,直接的单表SELECT可能比pg更快.但是加上连接,PG突然变得更快了.(MySQL特别不擅长外连接.)

总而言之:如果数据库对您来说是一个袋子,如果您从未打算进行数据挖掘或报告,如果您最感兴趣的是提供几乎没有关系或更新的大块文本--也就是说,如果您正在使用数据库为博客提供支持,那么MySQL是一个很好的 Select .

但是如果你真的在管理数据,如果你明白数据比前端程序和中间层业务规则生命周期 更长,对企业更有价值,如果你需要真正数据库的功能,请使用PG.

一个"Web程序员"决定他所有的表 struct 都可以由Hibernate(或其他ORM)自动生成,他看着这一点说,"太复杂了","我打赌复杂意味着更高的成本和更慢的速度",于是他 Select 了MySQL.

正如我所说的,PG要优越得多,我讨厌在MySQL的奇怪错误上捣乱,我认为对于任何稍微复杂的查询,PG的整体性能都可能比MySQL更好.

但是MySQL让事情看起来(看起来)很简单,所以很多并不真正了解数据库设计的人认为MySQL是一个很好的 Select .

使用PG.它是一致的、可靠的、符合标准的、处理(即使是中等程度的)复杂查询的速度更快,不会因为奇怪的错误而完全打乱您的日程安排.

Database相关问答推荐

为多个列 Select 最新的非空值

在哪里存储 PHP 应用程序的数据库登录凭据

多列上的全文索引如何工作?

SQL 概念 LEFT OUTER JOIN 和 WHERE NOT EXISTS 基本相同吗?

存储所有排列的模式数据库

微服务:每个实例或每个微服务的数据源?

操作错误:FATAL: database "django" does not exist

SQL Server 简单插入语句超时

South migration error: NoMigrations exception for django.contrib.auth

您如何在数据库中构造配置数据?

ORA-00060: deadlock detected while waiting for resource

哪个提供更好的性能一个大连接或多个查询?

在mysql中 Select 不同的2列组合

何时在关系数据库中使用枚举或小表?

Python中的内存数据库

用于存储文件夹系统的数据库模式的 Select

xampp phpmyadmin,格式参数不正确

SQLite 数据库方案作为实体关系模型

数据库 - (行或记录、列或字段)?

无需安装的轻量级 SQL 数据库