数据库基础选型之——PostgreSQL vs MySQL分析对比

Posted PostgreSQLChina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库基础选型之——PostgreSQL vs MySQL分析对比相关的知识,希望对你有一定的参考价值。

 
高可用环境对比

PostgreSQL支持一主一备、一主多备、级联复制、流复制以及逻辑订阅等原生的高可用架构,其性能稳定、可扩展能力强、灵活性高。

同时支持第三方开源软件的使用,包括中间件和开源软件,不仅能够保留原生高可用架构的读写分离、备份恢复等功能特性,还能提供自动故障转移、负载均衡方案等主流的高可用方案:

pgpool-II+PostgreSQL复制方案,实现实时复制备份、负载均衡等功能

patroni+etcd+PostgreSQL切换方案,实现节点健康检查、自动切换和故障转移等功能

repmgr+PostgreSQL故障管理方案,实现节点监控、故障切换等功能

mysql 的复制是基于 binlog 的逻辑异步复制,复制模式有一主一备、一主多备、级联复制、循环复、主主复制。是官方自带的高可用性架构,架构简单,极易上手且官方在原有的异步同步基础上继续优化,推出半同步复制,GTID,并行复制等。

MHA 是一套较成熟的MySQL高可用环境下故障切换和主从复制的第三方软件。能够实现故障切换,并能在故障切换中,最大可能的保证数据一致性。

MGR (MySQL Group Replication)是MySQL自带的一个插件,可以灵活部署。官方推出解决基于传统异步复制和半同步复制的缺陷的高可用方案。有着高一致性、高容错性、高扩展性、高灵活性的优点。

主要对象支持情况

 

上图对象的支持情况来看,PostgreSQL和达梦更接近Oracle,对于MySQL不支持的对象需要通过应用层代码替换实现。

PostgreSQL与MySQL优势对比

PostgreSQL 相对于MySQL的优势:

在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨。

存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力。

对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强。

PG主表采用堆表存放MySQL采用索引组织表,能够支持比MySQL更大的数据量。

PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。

MySQL的存储引擎插件化机制,存在锁机制复杂影响并发的问题,而PG不存在。

PG对可以实现外部数据源查询,数据源的支持类型丰富。

PG支持三种表连接方式,嵌套循环,哈希连接,排序合并,而MySQL只支持嵌套循环。

PostgreSQL支持JSON和其他NoSQL功能,如本机XML支持和使用HSTORE的键值对。它还支持索引JSON数据以加快访问速度,特别是10版本JSONB更是强大。

PostgreSQL完全免费,而且是BSD协议,这表明了PostgreSQL数据库不会被其它公司控制。相反,MySQL现在主要是被Oracle公司控制。

MySQL 相对于 PostgreSQL 的优势:

InnoDB 的基于回滚段实现的 MVCC 机制,相对 PG 新老数据一起存放的基于 XID 的 MVCC 机制,是占优的。

MySQL 采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束。

MySQL 的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作。

MySQL 的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了 InnoDB 适合事务处理场景外,Myisam 适合静态数据的查询场景。

从应用场景来说,PostgreSQL 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostgreSQL的 json,jsonb,hstore 等数据格式,特别适用于一些大数据格式的分析。而 MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如 Google、Facebook、Alibaba),当然现在 MySQL 的在 InnoDB 引擎的大力发展,功能表现良好。

PostgreSQL成为最佳选择,因为像曾经的Linux一样,它是一个开源工具,可以执行特定任务而不会增加复杂性。它的设计易于使用和实施,关注点严格在数据库上,而不必浪费资源添加“功能”去管理其他IT环境。PostgreSQL提供了更好的许可、更好的数据一致性以及灵活的扩展,满足市场的既要又要还要的需求,即:既要SQL通用性,又要NOSQL扩展性,还要多模开发便捷性;既要OLTP又要OLAP。

以上是关于数据库基础选型之——PostgreSQL vs MySQL分析对比的主要内容,如果未能解决你的问题,请参考以下文章

“王者对战”之 MySQL 8 vs PostgreSQL 10

SQLite vs MySQL vs PostgreSQL

[转帖] “王者对战”之 MySQL 8 vs PostgreSQL 10

MySQL向左,PostgreSQL向右:平安科技在金融应用的技术选型

技术选型系列 -- Redis VS Memcached

「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL