PostgreSQL 与 MySQL – 它们之间的区别
PostgreSQL 和 MySQL 之间的主要区别
- PostgreSQL 是一个对象关系数据库管理系统 (ORDBMS),而 MySQL 是一个社区驱动的 DBMS 系统。
- PostgreSQL 支持 JSON、XML 等现代应用程序功能,而 MySQL 只支持 JSON。
- 比较 PostgreSQL 与 MySQL 的性能,PostgreSQL 在执行复杂查询时表现良好,而 MySQL 在 OLAP 和 OLTP 系统中表现良好。
- PostgreSQL 完全符合 ACID 标准,而 MySQL 仅在与 InnoDB 和 NDB 一起使用时符合 ACID 标准。
- PostgreSQL 支持物化视图,而 MySQL 不支持物化视图。

什么是 PostgreSQL?
Postgre 是一个对象关系数据库管理系统 (ORDBMS)。它由加州大学计算机科学系开发。Postgres 开创了许多概念。
Postgre 是一个企业级关系数据库系统。它易于设置和安装。它支持 SQL 和 NoSQL。它拥有一个庞大的社区,乐于在您使用 PostgreSQL 时提供帮助。
什么是 MySQL?
MYSQL 是一个流行且广泛使用的 DBMS 系统。这个名字取自联合创始人 Michael Widenius 的女儿 My 的名字。MYSQL 的源代码可在 GNU GPL 许可下获得。该项目由 Oracle Corporation 拥有和维护。
它是一个 RDBMS(关系数据库管理系统),主要基于关系数据库模型。它使数据库管理更加轻松灵活。
MySQL 和 PostgreSQL 之间的区别
以下是 PostgreSQL 和 MySQL 之间的主要区别
参数 | MYSQL | PostgreSQL |
---|---|---|
开源 | MySQL 项目已根据 GNU 通用公共许可证的条款提供了其源代码。 | PostgreSQL 在 PostgreSQL 许可下发布,这是一个免费的开源许可证。它类似于 BSD 和 MIT 许可证。 |
ACID 合规性 | MySQL 仅在与 InnoDB 和 NDB Cluster 存储引擎一起使用时才符合 ACID 标准。 | PostgreSQL 完全符合 ACID 标准。 |
SQL 合规性 | MySQL 部分符合 SQL 标准。例如,它不支持 CHECK 约束。 | PostgreSQL 大部分符合 SQL 标准。 |
社区支持 | 它拥有大量贡献者社区,主要专注于维护现有功能,并偶尔出现新功能。 | 活跃的社区不断改进其现有功能,而其创新的社区则致力于确保其保持最先进的数据库。定期发布新的尖端功能和安全增强功能。 |
性能 | 它主要用于需要简单数据事务数据库的 Web 项目。 | 它广泛用于需要重要读写速度的大型系统中 |
最佳适用 | MySQL 在仅需要读取速度的 OLAP 和 OLTP 系统中表现良好。 | PostgreSQL 在执行复杂查询时表现良好。 |
JSON 支持 | MySQL 支持 JSON 数据类型,但不支持任何其他 NoSQL 功能。 | 支持 JSON 和其他 NoSQL 功能,如原生 XML 支持。它还允许对 JSON 数据进行索引以加快访问速度。 |
物化视图支持 | 支持临时表,但不提供物化视图。 | 支持物化视图和临时表。 |
生态系统 | MySQL 拥有动态生态系统,拥有 MariaDB、Percona、Galera 等变体。 | Postgres 的高端选项有限。但是,随着最新版本中引入的新功能,这种情况正在改变。 |
默认值 | 默认值可以在会话级别和语句级别覆盖 | 默认值只能在系统级别更改 |
B-tree 索引 | 如果适用,可以使用两个或更多 B-tree 索引。 | B-tree 索引在运行时合并以评估动态转换的谓词。 |
对象统计信息 | 相当好的对象统计信息 | 非常好的对象统计信息 |
Stack Overflow 问题 | 532K | 89.3K |
连接能力 | 限制连接能力 | 良好的连接能力 |
GitHub Star | 3.34k | 5.6k |
Fork | 1.6k | 2.4k |
使用该产品的知名公司 | Airbnb、Uber、Twitter | Netflix、Instagram、Groupon |
MySQL 的历史
- MySQL 由瑞典公司 MySQL AB 于 1995 年创建
- 2008 年,Sun 以 10 亿美元收购了 MySQL AB
- 2010 年,Oracle 收购了 Sun,从而获得了 MySQL
- 2012 年,MySQL 被创始人 Michael Widenius 通过 Monty Program Ab 公司分叉为 MariaDB
- 2013 年,MariaDB 在大多数发行版中取代了 MySQL
- Monty Program Ab 于 2013 年与 SkySQL 合并
- SkySQL Ab 于 2014 年更名为 MariaDB Corporation
PostgreSQL 的历史
- INGRES 于 1977 年开发
- Michael Stonebraker 和他的同事于 1986 年开发了 Postgres
- 支持真正的 ACID 和 PL/pgSQL – 1990 年
- 于 1995 年发布为 Postgres95
- 于 1996 年重新发布 Postgres95 为 PostgreSQL 6.0
- 添加了 MVCC、GUC、Join 语法控件和过程语言加载器 – 1998-2001 年
- 版本 7.2 至 8.2:包括 Schema 支持、非阻塞 VACUUM、角色和 dblink 等功能 – 2002-2006 年
- PostgreSQL 8.4 于 2009 年发布
- PostgreSQL 9.0 于 2010 年发布
- NYCPUG(纽约市 PostgreSQL 用户组)加入 PgUS(美国 PostgreSQL 协会)- 2013 年
- 举办 PGconf – 2014 年
为什么使用 MySQL?
以下是使用 MYSQL 的一些重要原因
- 支持主从复制、横向扩展等功能
- 它支持数据卸载报告、地理数据分发等。
- 对于主要用于读取的应用程序,使用 MyISAM 存储引擎具有非常低的开销
- 支持内存存储引擎用于常用表
- 用于重复使用的语句的查询缓存
- 您可以轻松地从博客、白皮书和书籍等不同来源学习和排查 MySQL 问题
为什么使用 PostgreSQL?
使用PostgreSQL 的主要原因包括
- 提供表分区、时间点恢复、事务性 DDL 等有用功能
- 能够在一个完整的 PKI 基础架构中使用第三方密钥存储
- 开发人员可以修改开源代码,因为它是在 BSD 许可下许可的,无需回馈增强功能
- 独立软件供应商可以重新分发它,而无需担心被开源许可证“感染”
- 用户和角色可以被分配对象级权限
- 支持 AES、3DES 和其他数据加密算法。
MySQL 的功能
- MySQL 是一个社区驱动的DBMS 系统
- 兼容各种平台,使用所有主要的语言和中间件
- 它支持多版本并发控制
- 符合 ANSI SQL 标准
- 允许基于日志和基于触发器的复制 SSL
- 面向对象且符合 ANSI-SQL2008 标准
- 多层设计,模块独立
- 完全多线程,使用内核线程
- 服务器可用于嵌入式数据库或客户端/服务器模型
- 提供内置的查询分析和空间分析工具
- 它可以处理任意数量的数据,最多可达 5000 万行或更多
- MySQL 可在多种 UNIX 系统以及 Windows 和 OS/2 等非 UNIX 系统上运行
PostgreSQL 的功能
- 活跃的社区正在加速其发展
- Oracle、DB2 和 SQL Server 的最常见替代品
- 可在您拥有的所有主要操作系统平台上运行
- MVCC 支持大量并发用户
- 广泛的索引,用于高性能报告
- 支持现代应用程序(XML 和 JSON)
- ANSI SQL 支持可移植的技能/代码
- 外键支持,用于高效的数据存储
- 表连接和视图,用于灵活的数据检索
- 触发器/存储过程,用于复杂的程序和事务
- 复制用于数据备份和读取可伸缩性
使用 MySQL 的缺点
- 与系统目录相关的事务不符合ACID 标准
- 有时服务器崩溃可能会损坏系统目录
- 无插件式身份验证模块,阻止集中管理的帐户
- 不支持角色,因此难以维护许多用户的权限
- 存储过程不可缓存
- 用于过程或触发器的表始终被预锁定
使用 PostgreSQL 的缺点
- 当前外部解决方案需要很高的学习曲线
- 没有主要版本升级功能
- 需要将数据导出或复制到新版本
- 升级过程中需要双倍存储
- 索引不能用于直接返回查询结果
- 查询执行计划未缓存
- 批量加载操作可能会受 CPU 限制
- 稀疏的独立软件供应商支持
MySQL 和 PostgreSQL 哪个更好?
比较两者后,我们可以说 MySQL 在改进自身以保持相关性方面做得很好,但另一方面,对于 PostgreSQL,您不需要任何许可。它还提供表继承、规则系统、自定义数据类型和数据库事件。因此,它肯定比 MySQL 略胜一筹。
摘要
- MYSQL 是一个流行且广泛使用的 DBMS 系统。它是一个 RDBMS(关系数据库管理系统),主要基于关系数据库模型。它使数据库管理更加轻松灵活。
- Postgre 是一个对象关系数据库管理系统 (ORDBMS)。它由加州大学计算机科学系开发。Postgres 开创了许多概念。
- MySQL 由瑞典公司 MySQL AB 于 1995 年创建。
- PostgreSQL 于 1995 年作为 Postgres95 发布
- MySQL 是一个社区驱动的 DBMS 系统。
- PostgreSQL 拥有一个活跃的社区,该社区正在加速其发展。