关于MySQL与PostgreSQL一些区别?

现在互联网公司中一般项目中用的数据库都是MySQL,而一般老的软件公司用的还是Oracle,MySQL有着轻量级,简洁的特点,特别在5.5版本之后性能提升的很大,但随着计算数据量的增大,分析繁琐,一种在国内用的不是很多,但国外有部分人认为的很好用的PostgreSQL在国内开始使用,比如腾讯,数据存储就是在MySQL中的,而数据分析就是用的PostgreSQL,所以看来很有必要研究一下MySQL与PostgreSQL的一些区别,这样在以后项目对数据库的选择上也可以有些帮助。

ps:下面一些观点借鉴了

https://www.cnblogs.com/doit8791/p/8608597.html

https://blog.csdn.net/testcs_dn/article/details/70482421

这两篇博客。第二篇也是转载的不过没找到原文出处,找到的朋友麻烦告知下。

Q:如何选择MySQL还是PostgreSQL?

A:虽然大多用的还是前者,但前者就一定万无一失了吗?当然不是的,但从数据丢失这点,PostgreSQL恢复起来就比MySQL容易,我可能还没有经历过这些事情,这是在第一篇博客中看到的,以后如果有机会遇到的话希望可以做个借鉴(不过我不希望遇到)

那么单单从这一点就能区别开这两种产品吗,

现在看看两者的优缺点:

一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。

二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。

三、PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。

四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。

五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。

六、PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL(听李元佳说过,但是没有验证过)。

七、PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。

八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。

九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。

十,pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)

下面是PostgreSQL和MySQL的一些区别对比图:

特征

PostgreSQL的

MySQL的

开源

完全开源

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

ACID合规性

完全符合ACID

有些版本是兼容的

SQL合规性

几乎完全符合

有些版本是兼容的

并发支持

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

支持某些版本。

安全

通过SSL支持从头开始安全

某些版本的SSL支持

NoSQL / JSON支持

多个支持的功能

仅支持JSON数据

访问方法

支持所有标准

支持所有标准

复制

可用多种复制技术:

 
  • 单主机到一个待机

  • 单主到多备用

  • 热备份/流式复制

  • 双向复制

  • 逻辑日志流式复制

标准主备备份复制:

 
  • 单主机到一个待机

  • 单主到多备用

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

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

  • 掌握掌握

物化视图

支持的

不支持

临时表

支持的

支持的

地理空间数据

支持的

支持的

编程语言

支持的

不支持

可扩展型系统

支持的

不支持

具体细节可以到https://yq.aliyun.com/articles/589953去查看,有些还理解不了,暂时做个记录,20190326 20:37更,待更新。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值