PG与mysql的区别,pg为何不流行?

1.mysql支持多种存储引擎,存储引擎选择较为灵活,实际上一般都在用innodb。ddl放在server端,ddl语句的事物性支持较差,可能出现server级数据库丢失。pg的server稳定性更好

2 mysql数据存储结构为聚簇索引,通过主键查询效率较高,但是有很多局限性,比如插入只能顺序插入。不太适合超大数据非主键查询,访问二级索引需要回表。pg采用堆表存储数据,能够支持更大的数据量

3 pg不支持分区表,通过继承表的形式达到分区表的目的,在分区较多成千上万时,pg的继承表效率较差

4 mysql有间隙锁, postgresql数据库执行delete操作后,表中的记录只是被标示为删除状态,并没有释放空间,在以后的update或insert操作中该部分的空间是不能够被重用,VACUUM作用是删除那些已经标示为删除的数据并释放空间,vacuum需要定期运行,比较消耗IO

5 pg支持的数据类型(如gis),分析函数支持更多,还支持面向对象数据库。有更多的第三方开源工具辅助系统设计和实现

6pg支持存储过程和执行计划缓存,表连接和复杂查询能力更强。mysql优化器,运算符都较简单,适合简单的查询操作

7 pg主从采用wal日志物理同步,mysql使用binlog逻辑同步。物理同步可靠性更高,复制性能更高。

8 mysql仅支持嵌套循环表连接(8.0支持hash连接),pg支持nl,hash,merge join

9 mysql适用应用逻辑简单,轻数据存储和计算的场景,pg适合复杂的数据分析和特殊应用场景

最近学习pg,发现pg不比mysql差,大家都是开源的关系型数据库,但是明显mysql的流行程度比pg更高。

其中有很多历史原因,mysql从4.x开始就已经有市场了,pg的前几个版本使用率不高,最近pg口碑比较好,但是mysql已经占据了很大部分开源关系型数据库市场。最近的pg版本功能很完善,也很复杂,大部分轻量应用只想要一个免费的,可存储数据的,简单的关系型数据库,大部分数据计算和分析功能不会放在OLTP数据库层面上。

pg的数据类型,优化器做的比mysql更好,它也更适合OLAP场景。比如阿里的ADB就是pg搞的,用于alanyze。华为的guass-A就是基于pg开发的,也是用于分析场景。所有pg不流行是不对的,pg还是很流行的,至少国产数据库或云数据库很关注pg

无论之前的发展如何,所有从目前市场现状来看,mysql与pg甚至互不争锋,他们一个服务于OLTP,一个应用在OLAP。

参考:

https://www.jianshu.com/p/c3911e3e830a

https://www.cnblogs.com/sbj-dawn/p/8053549.html

猜你喜欢

转载自blog.csdn.net/qq_40687433/article/details/110467141
今日推荐