MySQL 与 Postgresql 优劣势对比

postgresql和mysql都是免费且功能强大的开源数据库,很多用户面对这两个库都会有一个问题,那就是哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?

PostgreSQL与MySQL优劣对比

1、PostgreSQL相对于MySQL的优势

  • PostgreSQL遵循BSD协议,这意味着使用 PostgreSQL 无任何限制。
  • 可支持 C、C++、Java、PHP、Python 及 Perl 等,使您的业务开发更简单更易用。
  • PostgreSQL 是架构、语法、数据类型等与 Oracle 最接近的开源数据库。
  • 兼容 SQL 标准:SQL2003,支持 SQL2011 的主要特性;
  • 除了支持传统 SQL 的 LIKE 操作符、还支持 SQL99 新增的 SIMILAR TO 操作符和 POSIX 风格的正则表达式。
  • 丰富的数据类型:几何、网络地址、XML、JSON、RANGE、数组等。
  • 支持复合类型(自定义数据类型)。
  • 支持复杂的多表 JOIN 查询 SQL:JOIN 算法支持 hash join、merge join 等。
  • 支持窗口函数,可以改成复杂分析函数,因为分析函数包括了窗口函数。
  • 支持函数索引、部分(行)索引、自定义索引、全文索引。
  • 多进程的架构,更加稳定,单机可以支持更高访问量的数据库。
  • 有功能强大,性能优秀的插件,如 PostGIS 是一个空间数据库扩展程序插件,它增加了对地理对象的支持,允许您以 SQL 运行位置查询。
  • 达到商用级的数据强一致,基于 Synchronous Replication 复制技术,数据做到零丢失,即使类似于资金交易系统,也可以使用 PostgreSQL。

2、MySQL相对于PG的优势

  • innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触 发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀。
  • MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束。
  • MySQL的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作。
  • MySQL相对于PG在国内的流行度更高,PG在国内显得就有些落寞了。
  • MySQL的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了innodb适合事务处理场景外,myisam适合静态数据的查询场景。

总结

总体上来说,开源数据库都不是很完善,商业数据库oracle在架构和功能方面都还是完善很多的。从应用场景来说,PG更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostgreSQL的json,jsonb,hstore等数据格式,特别适用于一些大数据格式的分析;而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、facebook、alibaba),当然现在MySQL的在innodb引擎的大力发展,功能表现良好。

附带Mysql和Postgresql的学习教程,需要的同学请拿去。

Mysql:我们身边有哪些数据库 - 数据库入门 - Mysql - 小牛知识库

Postgresql:PostgreSQL 教程 - PostgreSQL教程 - PostgreSQL - 小牛知识库

你可能感兴趣的:(mysql,postgresql,数据库)