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 不支持物化视图。
Difference Between PostgreSQL and MySQL
PostgreSQL vs 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 vs PostgreSQL Trends
MySQL vs PostgreSQL 趋势

MySQL 的功能

  • MySQL 是一个社区驱动的DBMS 系统
  • 兼容各种平台,使用所有主要的语言和中间件
  • 它支持多版本并发控制
  • 符合 ANSI SQL 标准
  • 允许基于日志和基于触发器的复制 SSL
  • 面向对象且符合 ANSI-SQL2008 标准
  • 多层设计,模块独立
  • 完全多线程,使用内核线程
  • 服务器可用于嵌入式数据库或客户端/服务器模型
  • 提供内置的查询分析和空间分析工具
  • 它可以处理任意数量的数据,最多可达 5000 万行或更多
  • MySQL 可在多种 UNIX 系统以及 Windows 和 OS/2 等非 UNIX 系统上运行
PostgreSQL vs MySQL

PostgreSQL vs MySQL

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 拥有一个活跃的社区,该社区正在加速其发展。