MySQL 和 PostgreSQL 有何区别?

MySQL 是一个关系数据库管理系统,通过该系统,您可以将数据存储为包含行和列的表格。它是一个常用系统,支持许多 Web 应用程序、动态网站和嵌入式系统。PostgreSQL 是一个对象关系数据库管理系统,它可以提供比 MySQL 更多的功能。它可以为您在数据类型、可扩展性、并发性和数据完整性方面带来更大的灵活性。

了解 MySQL »

了解 PostgreSQL »

PostgreSQL 和 MySQL 有何相似之处?

PostgreSQL 和 MySQL 都是关系数据库管理系统。它们将数据存储在表中,这些表通过常见的列值相互关联。示例如下:

  1. 一家公司将客户数据存储在一个名为 Customers 的表格中,其中包含列名称 customer_idcustomer_namecustomer_address
  2. 该公司还将产品数据存储在名为 Products 的表格中,其中包含列名称 product_idproduct_name product_price。
  3. 为了记录每位客户购买的商品,该公司还编制了一个名为 Customer_Orders 的表格,其中包含列 customer_id 和 product_id

以下是 PostgreSQL 和 MySQL 之间的其他相似之处:

  • 两者都使用结构化查询语言(SQL)作为读取和编辑数据的接口
  • 两者都是开源的,并且具有强大的开发者社区支持
  • 两者都内置了数据备份、复制和访问控制功能

了解 SQL »

主要区别:PostgreSQL 与 MySQL

尽管 PostgreSQL 和 MySQL 在概念上相似,但在实施它们之前需要考虑许多差异。

ACID 合规性

原子性、一致性、隔离和持久性(ACID)是数据库属性,可确保数据库即使在出现意外错误后,仍能保持有效状态。例如,如果您更新了大量行,但系统中途故障,则不应修改任何行。

只有将 MySQL 与 InnoDB 和 NDB 集群存储引擎或软件模块一起使用时,它才符合 ACID 标准。PostgreSQL 在所有配置中都完全兼容 ACID。

并发控制

多版本并发控制(MVCC)是一项高级数据库功能,可创建记录的重复副本,来安全地并行读取和更新相同的数据。使用 MVCC 时,多个用户可以同时读取和修改相同的数据,而不会影响数据完整性。

MySQL 数据库不提供 MVCC,但是 PostgreSQL 支持此功能。

索引

数据库使用索引来更快地检索数据。通过将数据库管理系统配置为以不同于其他数据的方式对经常访问的数据进行排序和存储,您可以为该数据建立索引。

MySQL 支持存储分层索引数据的 B 树和 R 树索引。PostgreSQL 索引类型包括树、表达式索引、部分索引和哈希索引。随着规模的扩展,还有更多选项可以微调数据库的性能要求。

数据类型

MySQL 是一个纯粹的关系数据库。而另一方面,PostgreSQL 是一个对象关系数据库。这意味着在 PostgreSQL 中,您可以将数据存储为具有属性的对象。对象是许多编程语言(如 Java 和 .NET)中的常见数据类型。对象支持诸如父-子关系和继承之类的范例。

对于数据库开发人员来说,使用 PostgreSQL 更加直观。PostgreSQL 还支持其他数据类型,例如数组和 XML。

视图

视图是数据库系统通过从多个表中拉取相关数据来创建的数据子集。

虽然 MySQL 支持视图,但 PostgreSQL 提供了高级视图选项。例如,您可以预先计算一些值(例如给定时段内所有订单的总价值),来创建实体化视图。实体化视图提高了复杂查询的数据库性能。

存储过程

存储过程是您可以预先编写和保存的结构化查询语言(SQL)查询或代码语句。您可以重复使用相同的代码,从而提高数据库管理任务的效率。

虽然 MySQL 和 PostgreSQL 都支持存储过程,但 PostgreSQL 允许您调用以 SQL 之外的语言所编写的存储过程。

触发器

触发器是数据库管理系统中发生相关事件时,自动运行的存储过程。

在 MySQL 数据库中,您只能为 SQL INSERTUPDATEDELETE 语句使用 AFTERBEFORE 触发器。这意味着该过程将在用户修改数据之前或之后自动运行。相比之下,PostgreSQL 支持 INSTEAD OF 触发器,因此您可以使用函数运行复杂的 SQL 语句。

如何在 PostgreSQL 与 MySQL 之间做出选择

这两个关系数据库都适用于大多数使用案例。但是,在做出最终决定之前,您可能要考虑以下因素。

应用范围

PostgreSQL 更适合具有频繁写入操作和复杂查询的企业级应用程序。

但是,如果想创建原型,创建用户较少的内部应用程序,或者创建具有更多读取次数和较少数据更新的信息存储引擎,则您可以启动 MySQL 项目。

数据库开发经验

MySQL 更适合初学者,其学习曲线更短。从头开始构建新的数据库项目所需的时间更少。将 MySQL 设置为独立产品,或将其与其他 Web 开发技术(如 LAMP 堆栈)捆绑在一起很简单。

另一方面,PostgreSQL 对于新手来说可能更具挑战性。它通常需要复杂的基础设置设置和问题排查经验。

了解 LAMP 堆栈 »

性能要求

如果您的应用程序需要频繁更新数据,则 PostgreSQL 是更好的选择。但是,如果您需要频繁读取数据,则首选 MySQL。

写入性能

MySQL 使用写锁定来实现真正的并发性。例如,如果一个用户正在编辑表,则另一个用户可能必须等到操作完成后才能更改该表。

但是,PostgreSQL 内置了多版本并发控制(MVCC)支持,没有读写锁定。这样,如果要进行频繁并发的写入操作,则 PostgreSQL 数据库的表现会更好。

读取性能

PostgreSQL 会创建一个新的系统进程,为每个连接到数据库的用户分配大量内存(大约 10MB)。它需要内存密集型资源才能针对多个用户进行扩展。

另一方面,MySQL 为多个用户使用单一进程。因此,对于主要向用户读取和显示数据的应用程序,MySQL 数据库的表现优于 PostgreSQL。

区别摘要:PostgreSQL 与 MySQL

类别

MySQL

PostgreSQL

数据库技术

MySQL 是一个纯粹的关系数据库管理系统。

PostgreSQL 是一个对象关系数据库管理系统。

功能

MySQL 对视图、触发器和过程等数据库功能提供有限支持。

PostgreSQL 支持大多数高级数据库功能,例如实体化视图、INSTEAD OF 触发器和多种语言的存储过程。

数据类型

MySQL 支持数字、字符、日期和时间、空间和 JSON 数据类型。

PostgreSQL 支持所有 MySQL 数据类型,以及几何、枚举、网络地址、数组、范围、XML、hstore 和组合。

ACID 合规性

MySQL 仅针对 InnoDB 和 NDB 集群存储引擎具有 ACID 兼容性。

PostgreSQL 始终符合 ACID。 

索引

MySQL 支持 B 树和 R 树索引。

PostgreSQL 支持多种索引类型,例如表达式索引、部分索引和带有树的哈希索引。

性能

MySQL 提高了高频读取操作的性能。

PostgreSQL 提高了高频写入操作的性能。

初学者支持

MySQL 更容易入门。它为非技术用户提供了更广泛的工具集。

PostgreSQL 的入门比较复杂。它为非技术用户提供的工具集有限。 

AWS 如何支持您的 PostgreSQL 和 MySQL 要求?

Amazon Webs Services(AWS)为您的 PostgreSQL 和 MySQL 要求提供多项服务。

Amazon RDS

Amazon Relational Database Service(Amazon RDS)是一个托管式服务的集合,可以简化在云中设置、运营和扩展关系数据库的过程。借助 Amazon Relational Database Service(Amazon RDS)for MySQL,您可以在几分钟内部署可扩展的 MySQL 服务器,不仅经济实惠,而且可以调整硬件容量的大小。

同样地,Amazon Relational Database Service(Amazon RDS)for PostgreSQL 让您能够在云中轻松设置、运营和扩展 PostgreSQL 部署。它还负责处理复杂而耗时的管理工作,例如 PostgreSQL 软件升级、存储管理,以及为灾难恢复而进行的备份。

以下是您可以从使用 Amazon RDS 中获益的其他方式:

  • 在几分钟内部署可扩展的 MySQL 和 PostgreSQL 部署,不仅经济实惠,而且可以调整硬件容量大小
  • 重新使用与现有数据库相关的代码、应用程序和工具
  • 查看关键运营指标,例如计算、内存和存储容量利用率

Amazon Aurora

Amazon Aurora 是一个专为云打造的关系数据库管理系统(RDBMS),可与 MySQL 和 PostgreSQL 完全兼容。Aurora 兼具高端商用数据库的速度和可用性,以及开源数据库的简单性和成本效益。

Aurora 与 MySQL 和 PostgreSQL 完全兼容,使现有应用程序和工具无需修改即可运行。您可以迁移到 Amazon Aurora,以体验当前设置吞吐量的三倍。

Amazon EC2

Amazon Elastic Compute Cloud(Amazon EC2)提供最广泛、最深入的计算平台。它拥有 500 多个实例,可让您选择最新的处理器、存储、联网、操作系统和购买模型,以帮助您最大限度地满足工作负载需求。

您可以使用 Amazon EC2 在云中运行 MySQL 和 PostgreSQL 数据库。使用这种方法,您必须管理数据库管理任务,例如基础设施预调配、数据库设置、调优、修补、备份和扩展。

立即创建一个免费账户,开始在 AWS 上使用 PostgreSQL 和 MySQL。

使用 AWS 的后续步骤

开始使用 MySQL 进行构建
开始使用 PostgreSQL 进行构建