MySQL和PostgreSQL都是开源数据库界的佼佼者,各有千秋。国内互联网公司多用MySQL,但PostgreSQL的新特性也让人眼前一亮。PostgreSQL被誉为世界上最先进的开源数据库,功能强大,社区活跃,而且价格亲民,服务亲切。

PostgreSQL的功能从9版本开始完善,10版本更是飞速发展。它完全由社区驱动,核心代码由社区维护,商用版本多基于此进行二次开发。而MySQL虽然被Oracle收购,但其开源精神不减,MySQL之父Monty还创立了MariaDB分支。

简单对比两者,MySQL背后是成熟的商业公司,PostgreSQL则是庞大的志愿开发组。MySQL有企业版,PostgreSQL则没有,但有基于PG的企业级数据库。

下面从几个关键方面聊聊它们的异同:

  1. 开源协议:PostgreSQL基于自由的BSD/MIT许可,非常灵活;MySQL基于GPL或商业许可,使用上相对受限。
  2. ACID支持:PostgreSQL完全支持ACID特性,MySQL的InnoDB引擎也支持,但整体上PostgreSQL更强。
  3. SQL标准支持:PostgreSQL几乎支持所有SQL标准,类型丰富;MySQL支持部分标准,类型上稍逊一筹。
  4. 复制:MySQL基于binlog的异步复制,PostgreSQL支持同步、异步、半同步复制,还有逻辑复制。
  5. 并发控制:PostgreSQL通过MVCC有效解决并发问题,MySQL的InnoDB也支持MVCC,但锁定机制相对复杂。
  6. 性能:PostgreSQL适合复杂查询、大数据系统,MySQL适合Web项目和OLTP场景。
  7. 高可用技术:PostgreSQL有多种高可用实现,MySQL也有丰富的方案,如MHA、LVS+KEEPALIVE等。
  8. 外部数据源:PostgreSQL通过FDW支持外部数据源,MySQL暂无此功能。
  9. 数据存储和类型:PostgreSQL使用堆表,MySQL使用索引组织表,各有优势。
  10. 优劣对比:PostgreSQL在SQL标准、存储过程、表连接、索引类型等方面优于MySQL,但MySQL在MVCC机制、存储引擎插件化、国内流行度等方面占优。

总的来说,PostgreSQL适合企业级应用,MySQL适合互联网场景。两者都是开源数据库的佼佼者,选择哪个,取决于具体需求和场景。