专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
英式没品笑话百科  ·  看图说话,它对鸽子说了什么:________ ... ·  23 小时前  
不正常人类研究中心  ·  很难想象!就在几天前 ·  昨天  
冷兔  ·  精准打击.gif ·  昨天  
安徽文旅  ·  皖版“冰雪奇缘”春节上线 ·  3 天前  
安徽文旅  ·  皖版“冰雪奇缘”春节上线 ·  3 天前  
51好读  ›  专栏  ›  ImportNew

为什么高性能场景推荐 Postgres SQL

ImportNew  · 公众号  ·  · 2024-02-24 11:30

正文

(给ImportNew加星标,提高Java技能)


一、 数据库简介


1.1 MySQL


MySQL 声称自己是最流行的开源数据库,它属于最流行的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。LAMP 中的 M 指的就是 MySQL。构建在 LAMP 上的应用都会使用 MySQL。MySQL 最初是由 MySQL AB 开发的,然后在 2008 年以 10 亿美金的价格卖给了 Sun 公司,Sun 公司又在 2010 年被 Oracle 收购。Oracle 收购导致 MySQL 的出现两个版本:商业版和社区版。对于后者,由于 Oracle 控制了 MySQL 的开发,受到了广大使用者的批评。


1.2 PostgreSQL


PostgreSQL 标榜自己是世界上最先进的开源数据库,属于关系型数据库管理系统 (ORDBMS), 是以加州大学计算机系开发的 POSTGRES,4.2 版本为基础的对象关系型数据库管理系统, 最初是 1985 年在加利福尼亚大学伯克利分校开发的,作为 Ingres 数据库的后继。PostgreSQL 是完全由社区驱动的开源项目。它提供了单个完整功能的版本,而不像 MySQL 那样提供了多个不同的社区版、商业版与企业版。PostgreSQL 基于自由的 BSD/MIT 许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。


Note:

MySQL的层级关系:实例 -> 数据库 -> 表

Postgres 的层级关系:实例 -> 数据库 -> Schema -> 表

schema 可以理解为命名空间,不影响使用


二、性能对比


测试环境


MySQL:    - 硬件配置:4核心 16GB内存    - 版本:MySQL 8.0
Postgres SQL: - 硬件配置:4核心 16GB内存 - 版本:Postgres SQL 13


此次压测数据, SELECT 均为 SELECT 按照主键查询, UPDATE 按照主键进行 UPDATE, INSERT 则为一次 INSERT 一行数据。从压测数据上来看,我们可以得出以下几个结论:


  • 在吞吐量上而言,Postgres SQL 在 SELECT 性能上优于 MySQL 一倍, 在 INSERT 上优于 4-5 倍, UPDATE 则优 5-6 倍。

  • 从平均耗时上来看, Postgres SQL 优于 MySQL 不止数倍。

  • 尤其从热点行更新上看出,MySQL 性能仅为 Postgres SQL 的, 1/8 左右,耗时也增加了 7 倍。


三、适用场景,如何选择?


相对于 Postgres MySQL 更简单, 所以有着更高的流行度, 在技术资料,以及技术组件支持上,支持的也更完善一些, 但不意味着它并不是不能替代的, 于笔者而言, MYSQL 更像用于中小企业、个人的一款数据库工具, 因为会的人多, 文档资料比较完善,所以入手难度低。但这些并不意味着 MYSQL 是最好的。


从上图来看 Postgres SQL 的发展势头非常迅猛,目前已经隐隐有追上 MySQL 的趋势, 而 MySQL 相对而言,使用情况受欢迎度一直呈现下降趋势。

MySQL 适用的场景


MySQL 适用于简单的应用场景,如电子商务、博客、网站等, 大中小型系统均可以使用 MySQL, 它最高支持千万级别到数亿级别的数据量, 但是在高性能要求的情况下, 比如较快的响应和较高的吞吐量的时候, MySQL 的性能稍微捉襟见肘, 另外,在查询条件比较复杂、业务吞吐量要求不高,响应时长无要求,的时候,可以选择 MySQL

Postgres SQL适用的场景


总的来说, Postgre SQL 更适合复杂的数据结构、高级应用和大规模数据集, 当然如果数据规模比较小, 也可以选择 Postgres SQL, 无论是什么场景,如果你想用 Postgres SQL, 总可以找到对应的解决方法, 有且仅有, 在查询条件比较复杂,的时候不太适用, 因为根据我们实际线上的业务表现是 Postgre SQL 可能会选错索引。

四、总结


PostgreSQL 相对于 MySQL 的优势


  • Postgre SQL 在性能上远远好于 MYSQL, 通过上面的压测数据即可体现,无论是在耗时,还是在整体吞吐量上,有显著优势。
  • Postgre SQL 在单行更新上有明显优势,尤其是启用了 HOT UPDATE 后, 性能比 MYSQL 高了一个数量级。
  • 在 SQL 的标准实现上要比 MySQL 完善,而且功能实现比较严谨,比较学院化;
  • Postgre SQL 主表采用堆表存放,MySQL 采用索引组织表,能够支持比 MySQL 更大的数据量。
  • Postgre SQL 的主备复制属于物理复制,相对于 MySQL 基于 binlog 的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
  • MySQL 的事务隔离级别 repeatable read 并不能阻止常见的并发更新,得加锁才可以,但悲观锁会影响性能,手动实现乐观锁又复杂。而 Postgre SQL 的列里有隐藏的乐观锁 version 字段,默认的 repeatable read 级别就能保证并发更新的正确性,并且又有乐观锁的性能。

Postgre SQL之于MySQL相对劣势:


  • Postgre SQL 系统表设计相对复杂, 在进行一些系统表的统计、操作等方面比较复杂。
  • Postgre SQL 的索引选择方面,选错的概率稍高一些 (实测), 而且不能跟 MySQL 一样方便的使用 force_index。
  • Postgre SQL 存在 vacuum, 需要结合具体使用场景,来调整 vacuum 的参数。

转自:winjeg,

链接:juejin.cn/post/7324362442229891124



- EOF -

推荐阅读





请到「今天看啥」查看全文