PostgreSQL和MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 翻译来源:https://www.2ndquadrant.com/en/postgresql/postgresql-vs-mysql/ PostgreSQL和MySQL 之间有着根本的区别。

翻译来源:https://www.2ndquadrant.com/en/postgresql/postgresql-vs-mysql/

2ndquadrant_postgresqlvmysql_display.png

PostgreSQL和MySQL 之间有着根本的区别在评估两个系统之间的差异和折衷之后,必须做出明智的决定。

我们已经提供了 PostgreSQL和MySQL之间最常被评估的特性和功能的相似之处和不同  处:


虽然两个数据库之间存在许多相似性和重叠,但也有非常明显的差异。
我们试图为您提供两者之间公平和准确的比较,但最终有必要评估您的独特场景,并确定哪种数据库最适合您的特定场景。 


开源 

开源软件具有独特的优势 - 成本,灵活性,自由性,安全性和责任性 - 这是专有软件解决方案无法企及的。开放源代码软件可以免费获得,并且可以被任何人重新分配和修改。开源软件具有长期可行性,始终处于技术前沿它由一个由全球组织和个人开发者组成的全球社区创建和支持,其中许多人也靠开源合作和志愿服务等方式生活。

PostgreSQL的

MySQL的

PostgreSQL由PostgreSQL全球开发组开发,PostgreSQL全球开发组由多家公司和个人贡献者组成。


它是免费的开源软件。PostgreSQL是在PostgreSQL许可证下发布的,这是一种自由开源许可证,类似于BSD或MIT许可证。

MySQL开发项目已经根据GNU通用公共许可证条款提供了其源代码以及各种专有协议。

 

它现在由Oracle公司拥有,并提供多个专有用途的付费版本。


ACID合规性 

ACID(Atomicity,Consistency,Isolation,Durability)是一组数据库事务的属性。ACID合规性确保即使在单个事务中发生多个更改时也不会在系统发生故障时丢失数据或错误传达数据


PostgreSQL的

MySQL的

PostgreSQL完全符合ACID标准,并确保满足所有要求。

使用InnoDB和NDB集群存储引擎时,MySQL仅符合ACID标准。


SQL合规性

SQL合规性是数据库必须满足并实现所有结构化查询语言准则和标准的标准。当公司想要为应用程序使用异构数据库时,这一点非常重要。 

具有SQL合规性使得将数据从一个SQL兼容数据库移动到另一个(例如Oracle到PostgreSQL或SQL Server)非常容易。


PostgreSQL的

MySQL的

PostgreSQL在很大程度上是SQL兼容的。每个功能的一致性水平在手册的附录D中已清楚地列出,并且任何偏差都清楚地记录在PostgreSQL手册的“参考”部分。


从文档中提取

PostgreSQL支持SQL:2011的大部分主要功能。在满足核心一致性所需的179个必需功能中,PostgreSQL至少符合160个。此外,还有一大串支持的可选功能。值得注意的是,在撰写本文时,没有任何数据库管理系统的当前版本声明完全符合Core SQL:2011。

MySQL在部分版本上部分兼容(例如,不支持CHECK约束)。

从文档中提取

我们的产品主要目标之一是继续致力于遵守SQL标准,但不会牺牲速度或可靠性。我们不害怕添加SQL扩展或支持非SQL功能,如果这大大增加了我们用户群中大部分用户的MySQL服务器的可用性。


复制

数据库复制是将数据从一台计算机或服务器中的数据频繁地电子复制到另一台数据库中的数据库,以便所有用户共享相同级别的信息。其结果是一个分布式数据库,用户可以在其中访问与其任务相关的数据,而不会干扰他人的工作。

PostgreSQL的

MySQL的

PostgreSQL支持Master-Standby复制,并引入了重要的增强功能,从而产生极其快速的WAL处理,为备用服务器提供近乎实时的复制和热备份功能。

 

PostgreSQL提供的复本:

  • 单主机到一个待机

  • 单主到多备用

  • 热备份/流式复制

  • 双向复制

  • 逻辑日志流式复制

  • 级联复制

MySQL支持主备备份。

 

MySQL提供的复制:

  • 单主机到一个待机

  • 单主到多备用

  • 单个主站到一个备用站到一个或多个备用站

  • 循环复制(A到B到C并返回到A)

  • 掌握掌握


性能

性能是一个只能通过评估潜在情景的指标来衡量的领域,因为它取决于特定用户的纯粹要求和应用程序的性质。

PostgreSQL的

MySQL的

PostgreSQL广泛应用于读写速度至关重要且需要验证数据的大型系统中。此外,它还支持各种性能优化,这些优化仅在商业解决方案(如地理空间数据支持,不带读锁的并发性等)(如Oracle,SQL Server)等商业解决方案中可用。


总体而言,PostgreSQL性能在需要执行复杂查询的系统中得到了最佳利用。


PostgreSQL在OLTP / OLAP系统中表现良好,当需要读/写速度并需要广泛的数据分析时。


PostgreSQL也适用于商业智能应用程序,但更适合需要快速读/写速度的数据仓库和数据分析应用程序。

MySQL是一种广泛选择的基于Web的项目,只需简单地为简单的数据交易提供数据库。然而,通常情况下,当MySQL因重负载或尝试完成复杂查询而表现不佳时,表现不佳。

 

当只需要读取速度时,MySQL在OLAP / OLTP系统中表现良好。

 

MySQL + InnoDB为OLTP场景提供了非常好的读/写速度。总体而言,MySQL在高并发情况下表现良好。

 

由于商业智能应用程序通常是重读的,因此MySQL是可靠的,并且与商业智能应用程序配合良好。


安全

数据库安全性是指用于保护和保护数据库或DBM免遭非法使用,恶意威胁和攻击的集体措施它是一个广泛的术语,包括确保数据库环境内安全的多种过程,工具和方法

PostgreSQL的

MySQL的

PostgreSQL具有角色并继承角色来设置和维护权限。PostgreSQL具有本地SSL支持连接来加密客户端/服务器通信。它还具有行级安全性。

 

除此之外,PostgreSQL还附带了一个名为SE-PostgreSQL的内置增强功能,可以根据SELinux安全策略提供额外的访问控制。

MySQL根据访问控制列表(ACL)为所有连接,查询和用户可能尝试执行的其他操作实现安全性。还有一些支持MySQL客户端和服务器之间的SSL加密连接。


云托管

随着越来越多的企业选择将数据转移到云中,寻找支持数据库的云提供商的能力变得越来越重要。云主机允许服务器具有弹性,使您可以快速扩展或收缩其容量。它还可以减少潜在的停机时间,同时轻松管理高峰负载。

PostgreSQL的

MySQL的

受到所有主要云服务提供商的支持,包括阿里巴巴,亚马逊,谷歌和微软。

受到所有主要云服务提供商的支持,包括阿里巴巴,亚马逊,谷歌和微软。


社区支持


PostgreSQL的

MySQL的

PostgreSQL拥有一个非常强大和活跃的社区,不断改进现有功能,同时其创新的提交者努力确保它仍然是具有最新尖端功能和安全性的最先进数据库。

MySQL拥有大量的贡献者社区,尤其是在Oracle收购之后,他们主要关注于偶尔出现的一些新功能来维护现有功能。


并发支持

并发意味着多个用户可以同时访问数据。这是开发一个需要多个用户同时访问数据的系统时考虑的核心功能之一,因为它增强了许多人同时在多个位置访问和使用数据库的能力。


PostgreSQL的

MySQL的

PostgreSQL通过其MVCC实现有效地解决了并发问题,实现了非常高水平的并发性。

MySQL只在InnoDB中支持MVCC。


NoSQL特性/ JSON支持

NoSQL和JSON都非常流行,NoSQL数据库变得越来越普遍。JSON是一种简单的数据格式,它允许程序员存储和传递跨系统的值,列表和键值映射集。


PostgreSQL的

MySQL的

PostgreSQL支持JSON和其他NoSQL特性,如本机XML支持和HSTORE的键值对。它还支持索引JSON数据以加快访问速度。

MySQL具有JSON数据类型支持,但没有其他NoSQL功能。它不支持JSON索引。


物化视图/临时表

物化视图是一个数据库对象,它包含查询结果,可根据需要从原始基表中更新查询结果。它可以被认为是数据库的“缓存”。 

临时表存储的数据不需要在创建它的会话生命周期之后持续存在。与物化视图不同的主要方式是后者提供定期更新数据的能力,从而为该用例提供更高的效率。


PostgreSQL的

MySQL的

支持物化视图和临时表。

支持临时表,但不支持物化视图。


地理空间数据支持

地理空间数据是数据库保存并可用于分析的所有地理数据点。它是关于物理对象的信息,可以用地理坐标系中的数值表示。

PostgreSQL的

MySQL的

PostgreSQL通过PostGIS扩展支持地理空间数据。地理空间数据有专门的类型和功能,可直接在数据库级别使用,使开发人员可以更轻松地进行分析和编码。

内置地理空间数据支持。


编程语言支持

编程语言支持可帮助广泛的开发人员以他们最熟练的语言执行多项任务。开发人员可以根据具体情况自由决定是在服务器还是在客户端执行给定的过程,因为服务器支持各种不同的数据库功能的编程语言。编程语言倾向于给开发者更多的权力。

PostgreSQL的

MySQL的

PostgreSQL支持各种编程语言,包括:C / C ++,Java,JavaScript,.Net,R,Perl,Python,Ruby,Tcl等等; 甚至可以在单独的进程中运行用户提供的代码(即作为后台工作人员运行)。

一些支持服务器端编程的单一语言是不可扩展的。


可扩展型系统

支持可扩展类型系统的数据库可以通过多种方式进行扩展,如添加新的数据类型,函数,运算符,聚集函数,索引方法和过程语言。


PostgreSQL的

MySQL的

PostgreSQL有几个专用于扩展性的功能。可以添加新的类型,新的功能,新的索引类型等。

不支持可扩展性。


比较总结

以下是PostgreSQL与MySQL的对比图:

特征

PostgreSQL的

MySQL的

开源

完全开源

开放源代码,但由Oracle拥有并提供商业版本

ACID合规性

完全符合ACID

有些版本是兼容的

SQL合规性

几乎完全符合

有些版本是兼容的

并发支持

MVCC实现支持多个请求而不读取锁

支持某些版本。

安全

通过SSL支持从头开始安全

某些版本的SSL支持

NoSQL / JSON支持

多个支持的功能

仅支持JSON数据

访问方法

支持所有标准

支持所有标准

复制

可用多种复制技术:

 
  • 单主机到一个待机

  • 单主到多备用

  • 热备份/流式复制

  • 双向复制

  • 逻辑日志流式复制

标准主备备份复制:

 
  • 单主机到一个待机

  • 单主到多备用

  • 单个主站到一个备用站到一个或多个备用站

  • 循环复制(A到B到C并返回到A)

  • 掌握掌握

物化视图

支持的

不支持

临时表

支持的

支持的

地理空间数据

支持的

支持的

编程语言

支持的

不支持

可扩展型系统

支持的

不支持
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
5月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
457 62
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
11月前
|
关系型数据库 MySQL 数据库
市场领先者MySQL的挑战者:PostgreSQL的崛起
PostgreSQL(简称PG)是世界上最先进的开源对象关系型数据库,起源于1986年的加州大学伯克利分校POSTGRES项目。它以其丰富的功能、强大的扩展性和数据完整性著称,支持复杂数据类型、MVCC、全文检索和地理空间数据处理等特性。尽管市场份额略低于MySQL,但PG在全球范围内广泛应用,受到Google、AWS、Microsoft等知名公司支持。常用的客户端工具包括PgAdmin、Navicat和DBeaver。
763 4
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
599 4
|
关系型数据库 MySQL PostgreSQL
postgresql和mysql中的limit使用方法
postgresql和mysql中的limit使用方法
436 1
|
5月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
688 2
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
556 0
|
存储 缓存 关系型数据库

推荐镜像

更多