暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL数据库与其他数据库的对比

原创 bingo 2023-02-15
511

PostgreSQL与MySQL数据库对比

MySQL的缺点:

1、功能不够强大:MySQL的多表连接查询方式只支持“Nest loop”,不支持“hash

join”和“sort merge join”。不仅如此,还有很多SQL语法它也不支持,子查询性能比较

低。由于它不支持sequence,有公司还为此专门开发了统一序号分发中心的软件。

2、性能优化工具和度量信息不足:MySQL在运行过程中如果出现问题,只产生很少的

性能数据,很难让维护人员准确定位问题产生的原因。MySQL的复制是异步的,无

法通过Master/Slave做到数据零丢失(MySQL 5.7的组复制可以实现数据零丢失)。

一些第三方公司也改造MySQL源代码实现同步复制,但这些方案要么是没有开源,

要么已开源却不是很稳定,所以对于普通大众来说,如何实现同步复制成了一个令人

头疼的问题。

3、在线操作功能较弱:如果在MySQL表中加列,基本上是新建一个表,而且建索引时

也会锁定整张表,即在建索引过程中,表不能做任何操作。一些大的互联网公司或者

修改MySQL源码来实现在线DDL的功能,或者是通过上层架构来解决这个问题,如先

在slave数据库上把DDL做完,然后把应用从master库切换到slave,再把原先的

master上把DDL做完。第一种方法,需要公司有很强的MySQL研发能力,第二种方法

需要公司有较强的开发能力,能设计出较强的应用架构。这对于一些中小型公司来说

不太容易实现。


相对于MySQL的弱点,PostgreSQL优点:

1、PostgreSQL功能强大:支持所有主流的多表连接查询的方式(如:“Nest

Loop”、“hash join”、“sort merge join”等);支持绝大多数的SQL语法(如:with字

句)。PostgreSQL对正则表达式强大的支持、内置函数也非常丰富。字段类型还支持

数组类型。除了可以使用PL/PGSQL写存储过程外,还可以使用各种主流开发语言的

语法(如:Python语言的PL/Python、Perl语言的PL/Perl来写存储过程)。这些强大

的功能可以大大地节约开发资源。很多开发人员在PostgreSQL上做开发时,会发现数

据库已帮自己实现了很多功能,甚至有一些业务功能都可以直接使用数据库的功能解

决,不再需要写代码来实现。

2、性能优化工具与度量信息丰富:PostgreSQL数据库中有大量的性能视图,可以方便

地定位问题(比如:可看到正在执行的SQL,可通过锁视图看到谁在等待、哪条记录

被锁定等)。PostgreSQL中设计了专门的架构和进程用于收集性能数据,即有物理

I/O方面的统计,也有表扫描及索引扫描方面的性能数据。

3、在线操作功能好:PostgreSQL增加空值的列时,本质上只是在系统表上把列定义

上,无须对物理结构做更新,这就让PostgreSQL在加列时可以做到瞬间完成。

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

4、从PostgreSQL9.1开始,支持同步复制宫,通过master和slave之间的复制可以实现零

数据丢失的高可用方案。


另外,由于MySQL对SQL语法支持的功能较弱,基本上不适合做数据仓库。而PostgreSQL不仅支持复杂的SQL,还支持大量的分析函数,非常适合做数据仓库。




























「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论