> 文章列表 > PostgreSQL有哪些优势?

PostgreSQL有哪些优势?

PostgreSQL有哪些优势?

什么是PostgreSQL

  1. 强大的开源数据库
  2. 支持丰富的数据类型(JSON、JSONB、数组)
  3. 提供了丰富的接口,可以很方便地扩展它的功能
  4. 支持使用流行的编程语言写自定义函数

PostgreSQL数据库的优势

  1. PostgreSQL数据库是目前功能最强大的开源数据库。
  2. 稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。
  3. 开源省钱:PostgreSQL数据库是开源的、免费的,而且使用的是类BSD协议,在使用和二次开发上基本没有限制。
  4. 支持广泛:PostgreSQL数据库支持大量的主流开发语言,包括C、C++、Perl、Python、Java、Tcl、以及PHP等。
  5. PostgreSQL社区活跃:PostgreSQL基本上每3个月推出一个补丁版本,这意味着已知的Bug很快会被修复,有应用场景的需求也会及时得到响应。

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

PostgreSQL与MySQL数据库的对比

可能有人会有疑惑,既然已经有一个人气很高的开源数据库MySQL了,为什么还要使用PostgreSQL?这主要是因为不同的数据库有不同的特点,应该为合适场景选择合适的数据库

在一些应用场景中,使用MySQL有以下几大缺点:

  • 复杂SQL支持弱:在MySQL8.0之前,多表连接查询的方式只支持“Nest Loop”,不支持Hash JOIN和Sort Merge JOIN(注:MySQL8.0版本开始支持Hash JOIN,但不完善,有一些问题。另因为MySQL无完善的基于COST的优化器(CBO),长期来说也会存在一定的问题),不仅如此,它对很多SQL语法都不支持,子查询性能比较低。例如,MySQL不支持单独的sequence,有公司为此还专门开发了统一序号分发中心的软件。
  • 性能优化工具与度量信息不足:如果MySQL在运行过程中出现问题,性能监控数据较少,维护人员要准确定位问题存在一定的困难。
  • MySQL的复制是异步或半同步的逻辑同步,这存在两个问题:
    • 大事务下会导致比较大的延迟
    • 容易导致数据库的不一致,原因是逻辑复制容易导致数据的不一致性。如何实现领数据库丢失的同步复制比较头疼。
  • 在线操作功能弱:很多在线DDL需要重建表,代价很大,有一些操作还会锁表。
  • 难以写插件来扩展MySQL的功能:MySQL扩展能力有限,比如MySQL比较难访问其他数据库中的数据。

相对Mysql的缺点,PostgreSQL有以下几个优点:

  • 功能强大:支持所有主流多表连接查询的方式
    • 支持Nest loop
    • 支持Hash JOIN
    • Sort Merge JOIN
    • 支持绝大多数的SQL语法
    • 对正则表达式支持强
    • 内置函数丰富
    • 字段类型支持数组
    • 支持存储过程
  • 性能优化工具与度量信息丰富
    • 有大量的性能视图
    • 方便定位问题
  • 在线操作功能好
    • 增加空值列,在系统表定义,无须对物理结构做更新,可以瞬间完成
    • 支持在线建索引,在创建索引的过程可以不锁更新操作。
  • 从PostgreSQL9.1开始,支持同步复制功能,通过Master和Slave之间的复制可以实现零数据丢失的高可用方案
  • 可以方便地写插件来扩展PostgreSQL数据库的功能
  • 支持复杂SQL,支持大量的分析函数,适合做数据仓库
  • 空间索引

PostgreSQL与Oracle数据库的对比

Oracle数据库是目前功能最强大的商业数据库,PostgreSQL则是功能最强大的开源数据库。

Oracle在集群功能如RAC、ASM、方面比较强,但PostgreSQL也有一些比Oracle强的特性,如在索引和可扩展等方面。

  • PostgreSQL与Oracle有很多相似之处,它们都是使用共享内存的进程结构,客户端与数据库服务器建立一个连接后,数据库服务器就启动一个进程来为这个连接服务
  • PostgreSQL在主备库方面非常完善,可以搭建同步备库、异步备库、延迟备库。备库搭建比较简单,也更灵活
  • PostgreSQL有更多支持互联网特征功能,where条件可以使用正则表达式匹配,也可以使用Python、Perl等语言写存储过程等
  • PostgreSQL更小巧,可以在内存很小的机器上完美运行起来。安装时间在分钟级,而Oracle在小时级