PostgreSQL和MySQL

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 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)

  • 掌握掌握

物化视图

支持的

不支持

临时表

支持的

支持的

地理空间数据

支持的

支持的

编程语言

支持的

不支持

可扩展型系统

支持的

不支持
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
关系型数据库 MySQL Serverless
高顿教育:大数据抽数分析业务引入polardb mysql serverless
高顿教育通过使用polardb serverless形态进行数据汇总,然后统一进行数据同步到数仓,业务有明显高低峰期,灵活的弹性伸缩能力,大大降低了客户使用成本。
|
3月前
|
关系型数据库 Serverless 分布式数据库
PolarDB MySQL 版 Serverless-测评
通过函数计算调用PolarDB数据,拉起暂停状态的PolarDB MySQL 集群。
111549 8
|
3月前
|
关系型数据库 MySQL 分布式数据库
什么是PolarDB MySQL标准版
PolarDB MySQL版的标准版是PolarDB全新推出的数据库集群类型,采用阿里云全新一代高性能低成本的计算和存储基础设施,用户使用较低的成本即可享受到PolarDB的核心能力。
102 0
|
3月前
|
关系型数据库 MySQL Serverless
阿里云云原生数据库 PolarDB MySQL Serverless:卓越的性能与无与伦比的弹性
阿里云原生数据库 PolarDB MySQL Serverless 拥有卓越性能和无与伦比的弹性。通过实验体验,深入了解其基本管理和配置、智能弹性伸缩特性和全局一致性特性。实验包括主节点和只读节点的弹性压测以及全局一致性测试,旨在亲身体验 PolarDB 的强大性能。通过实验,可以更好地在实际业务场景中应用 PolarDB,并根据需求进行性能优化和调整。
681 2
|
2月前
|
SQL NoSQL 关系型数据库
关系型数据库管理系统Mysql
关系型数据库管理系统Mysql
|
1月前
|
数据可视化 关系型数据库 MySQL
PolarDB常见问题之无法创建mysql的连接池如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
1月前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
|
1月前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
【2月更文挑战第16天】PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
24 1
|
1月前
|
关系型数据库 MySQL 测试技术
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性!
本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDB MySQL Serverless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开放定制修改、可重复验证。参与活动即有机会获得鼠标、小米打印机、卫衣等精美礼品。
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性!
|
2月前
|
关系型数据库 MySQL 测试技术
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性
本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDB MySQL Serverless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开放定制修改、可重复验证。参与活动即有机会获得鼠标、小米打印机、卫衣等精美礼品。