PostgreSQL和MySQL对比详解(5大区别优劣及选择)

PostgreSQL和MySQL对比详解(5大区别优劣及选择)-mikechen

MySQL和PostgreSQL这两个是十分流行的开源数据库,但MySQL和PostgreSQL两者之间到底有什么异同点呢?本篇详解。

什么是PostgreSQL?

PostgreSQL,是PostgreSQL Global Development Group 开发的开源关系数据库管理系统,一般都简称他为“PG”。

PostgreSQL和MySQL对比详解(5大区别优劣及选择)-mikechen

PostgreSQL 是一个企业级的关系数据库,允许关系和非关系查询,支持例如: Java、.Net、Go、Ruby、C、C++等。

PostgreSQL 可用于 macOS、Windows、Linux、FreeBSD等操作系统,也适用于大多数其他类 Unix 系统,PostgreSQL 是 Apple 的 macOS 服务器的默认数据库。

PostgreSQL 通常用作网站、地理空间和分析应用程序的主要数据存储或仓库。

 

PostgreSQL的优势

相对MySQLPostgreSQL有以下几个优点:

1.功能强大

支持所有主流的多表连接查询的方式,比如:Nest loop、Hash JOIN、Sort Merge JOIN等。

PostgreSQL对正则表达式支持最强、内置函数也是最丰富的数据库。

 

2.性能优化工具与度量信息丰富

PostgreSQL数据库中有大量的性能视图,可以方便地定位问题,除此之外PostgreSQL还设计了专门架构和进程用于收集性能数据视图。

比如:可以看到正在执行的SQL,可以通过锁视图看到谁在等待,以及哪条记录被锁定等。

 

3.在线操作功能好

PostgreSQL增加空值列时,本质上只是在系统表上把列定义上,无须对物理结构做更新。

PostgreSQL还支持在线建索引的功能,在创建索引的过程可以不锁更新操作。

 

4.支持数据仓库

另外,由于MySQL对SQL语法支持的功能较弱,基本上不适合做数据仓库。

PostgreSQL不仅支持复杂的SQL,还支持大量的分析函数,非常适合做数据仓库。

 

5.移动互联网特征

PostgreSQL数据库中还有一些支持移动互联网的新功能,比如:空间索引。

PostGIS是最著名的一个开源GIS系统,它是PostgreSQL中的一个插件,在PostgreSQL中使用它很方便,通过PostGIS也可以很方便地解决LBS中的一些位置计算问题。

 

综上所述,PostgreSQL数据库是一个功能强大,又带有移动互联网特征的开源数据库。

 

MySQL的优势

1.MySQL事务回滚机制

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

 

2.MySQL采用索引组织表

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

 

3.MySQL的优化器较简单

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

 

4.MySQL分区表的实现要优于PG

基于继承表的分区实现,主要体现在分区个数达到上千上万后的处理性能差异较大。

 

5.MySQL的存储引擎插件化机制

使得它的应用场景更加广泛,比如除了innodb适合事务处理场景外,myisam适合静态数据的查询场景。

 

PostgreSQL与MySQL选择

如果你仅仅是想把数据库作为一个简单的存储软件,比如:一些大的互联网公司就是这样,一些较复杂的功能都想放在应用中来实现,那么选择MySQL是合适的。

如果你应用的数据访问很简单,比如:大多数的博客系统,那么后端使用MySQL也是很合适的。

但是如果你的应用不像博客系统那么简单,又不想消耗太多的开发资源,那么PostgreSQL是一个很明智的选择。

最有说服力的例子就是图片分享公司Instagram,在使用“Python+PostgreSQL”架构后,只是十几个人就支撑了整个公司的业务。

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法