为什么高性能场景选用 Postgres SQL 而不推荐使用 MySQL?

你还在用 MySQL 吗?为什么现在是切换到 PostgreSQL 的最佳时机 如果你在开发需要高度一致性和复杂事务操作的应用,PostgreSQL 可能是更合适的选择。 阅读详情

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

add51f6d26e525a41f2ebdf9b7dfaf09.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7324362442229891124


一、 数据库简介 TLDR

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 可以理解为命名空间,不影响使用

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

二、性能对比

测试环境

MySQL:

  • 硬件配置:4核心 16GB内存

  • 版本:MySQL 8.0

Postgres SQL:

  • 硬件配置:4核心 16GB内存

  • 版本:Postgres SQL 13

37329b252dd2a4cfec47188d9bba73fb.jpeg

此次压测数据, 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倍

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

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

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

但这些并不意味着MYSQL是最好的。

a9d1ea782b62b283927e54b9b09c49f3.jpeg
图片

从上图来看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的参数


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,“长按”或“扫描”下方二维码噢:

f6f406baa862a9568b39c2f0330b195e.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

6b3623ee67592e2f37f5e0ae1d49cbeb.png

3cc0d573c23a7ebae87358ac7b3e7c03.png0424ffa20f8cff4361f27212766d32ff.pngb48b8cddabfbdfa02f6011a2909dcf0a.pngfd68e2c107084d31303828c0cc2a5df9.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
pgsql和mysql比较 性能和扩展性:在高并发读写和负载逼近极限的情况下,PostgreSQL的性能指标仍能维持较好的表现,而MySQL则可能出现明显的下滑。同时,PostgreSQL支持多种集群架构,提供了灵活的同步策略和操作方式,使得其具有很好的扩展性。强大的SQL编程能力:PostgreSQL具有极其强悍的SQL编程能力,它支持图灵完备的语言进行复杂的查询和操作。总的来说,虽然每个数据库都有其适用的场景和特点,但根据以上的比较和分析可以看出,在很多方面上PostgreSQL相对于MySQL具有一定的优势和特色。 阅读详情

相关推荐

PostgreSQL与MySQL优劣势比较浅谈

目录 1 简介 2 postgresql比mysql强大在那些方面 3 PostgreSQL 为什么在国内没有MySQL流行 4 postgresql比mysql一些主要区别 5 postgresql比mysql特征比较 5.1 MariaDB的主要特点 5.2 PostgreSQL的主要特点 6 总结 1 简介 因为公司使用PostgreSQL很长时间了,忙于功能开发未对其PostgreSQL的一些优劣势有所了解,因为开发代码的话使用mybatis感知不出底层使用的数据库

赵广陆 3134

为什么越来越多的人选择PostgreSQL,放弃了MySQL

2023年Stack Overflow 调查显示,Postgres 已经取代 MySQL 成为第一名,成为最受欢迎的数据库。虽然这是国外统计,在中国应该还是MySQL更有广泛度,但足以说明问题,PostgreSQL的市场占有率越来越高了。

Z__7Gk的博客 2386

Halcon一维测量实战:从measure_pos与measure_pairs的底层原理到精准应用

本文深入解析Halcon中measure_pos与measure_pairs算子的底层原理与精准应用,涵盖参数调优、测量矩形方向设置及典型工业场景实战。通过对比分析,揭示两者在一维测量中的核心差异与适用场景,提供从基础到高级的完整解决方案,助力工业视觉检测精度提升。

weixin_42525551的博客 426

MySQL 和 PostgreSQL,我到底选择哪个?

MySQL 和 PostgreSQL 是两个广泛使用的关系型数据库管理系统(RDBMS)。它们都具有强大的功能和广泛的社区支持,但在某些方面存在一些差异。本文将详细比较 MySQL 和 PostgreSQL,包括它们的特点、性能、扩展性、安全性以及适用场景等方面。

网络技术联盟站 1万+

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 298

深入浅出:UE4类型系统完整构建过程详解

UE4的类型系统是一个复杂但设计精巧的架构,它通过静态代码生成和运行时构建的完美配合,实现了强大的反射功能。理解这个过程不仅有助于解决开发中的问题,也能让你更好地利用UE4的各种高级特性。就像建造一栋大楼需要经过设计、备料、框架、装修、验收等多个阶段,UE4类型系统的构建也是一个多阶段、精细化的过程。每个阶段都有其特定的职责,共同协作完成从源代码到运行时对象的转换。

m0_45371381的博客 911

为什么更多的人喜欢用PostgreSQL而不是MySQL ?

为什么更多的喜欢用PostgreSQL而不是MySQL

yuanpan的专栏 1224

ZYNQ裸机双网口通信实战:手把手教你用SDK和LWIP配置PS+PL以太网(附完整源码)

本文详细介绍了在ZYNQ裸机环境下实现双网口通信的全流程,包括硬件配置、LWIP协议栈优化及TCP通信实现。通过Vivado SDK和LWIP协议栈,开发者可以高效配置PS端内置网口与PL端扩展网口,提升嵌入式网络应用的灵活性和性能。附完整源码,助力快速开发。

weixin_30831529的博客 424

为什么高性能场景选用Postgres SQL 而不是 MySQL

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

兮梦的博客 1068

RoboMaster电控入门:手把手教你用STM32CubeMX配置大疆C板CAN总线驱动GM6020电机

本文详细介绍了如何使用STM32CubeMX配置大疆C板CAN总线驱动GM6020电机,适用于RoboMaster电控入门。从硬件准备到CubeMX工程初始化,再到CAN过滤器配置和电机控制协议解析,手把手教你避开常见配置陷阱,实现精准控制。

weixin_42524762的博客 269

数据治理——详解元数据、资源目录、主数据、数据元、元数据管理、主数据管理【附全文阅读】

摘要:数据中心建设的核心是元数据管理,即"描述数据的数据",包含内容、质量、所有者等关键信息。元数据在数据仓库中记录数据源、转换规则等,是管理基础;主数据管理则确保核心业务数据的准确一致。二者共同构建高效的数据资源目录,为数据服务提供支撑。(99字)

cdfunlove的博客 103

【PGCCC】为什么高性能场景选用Postgres SQL 而不是 MySQL

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

PGCCC的博客 1024

AIGC实战——变分自编码器(Variational Autoencoder, VAE)

变分自编码器通过在模型中引入随机性,并限制潜空间中的点的分布来解决自编码器存在的问题。只需进行一些微小的调整,就可以将自编码器转换为变分自编码器,从而使其成为真正的生成模型。在本节中,我们介绍了变分自编码器的基本原理,并使用 `Keras` 实现了一个变分自编码器用于生成 Fashion-MNIST 图像。

盼小辉丶的博客 1万+

为什么高性能场景选用 Postgres SQL 而不是 MySQL?

LAMP中的M指的就是MySQL。MySQL适用于简单的应用场景,如电子商务、博客、网站等, 大中小型系统均可以使用MySQL, 它最高支持千万级别到数亿级别的数据量, 但是在高性能要求的情况下, 比如较快的响应和较高的吞吐量的时候, MYSQL的性能稍微捉襟见肘, 另外,在查询条件比较复杂、业务吞吐量要求不高,响应时长无要求,的时候,可以选择MYSQL,Postgre SQL的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。

民工哥的博客 163

从零到一:ESP32与豆包大模型的RTC连续对话实现指南

文本实现ESP32S3 SparkBot与豆包大模型的RTC连续对话

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 4366

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 写代码有这16个好习惯,可以减少80%非业务的BUG!
下一篇: 服务老是被攻击?教你设计一套安全的接口访问策略,非常稳健!
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值