全方位对比 Postgres 和 MySQL (2023 版)

PlanetScale vs. Neon - MySQL 和 Postgres 间的第二仗 根据 2023 年 Stack Overflow 调研,Postgres 已经取代 MySQL 成为最受欢迎和渴望的数据库了。看起来 MySQL 和 Postgres 的爱恨交织还将继续。从原生的 MySQL vs. Postgres,到分布式的 TiDB vs. CockroachDB,再到云原生的 AWS Aurora vs. GCP AlloyDB,现在进入了下一章节:面向开发者的 serverless 数据库 PlanetScale vs. Neon。 阅读详情

根据 2023 年 Stack Overflow 调研,Postgres 已经取代 MySQL 成为最受敬仰和渴望的数据库。

file

随着 Postgres 的发展势头愈发强劲,在 Postgres 和 MySQL 之间做选择变得更难了。

如果看安装数量,MySQL 可能仍是全球最大的开源数据库。

file

Postgres 则自诩为全球最先进的开源关系型数据库。

file

因为需要与各种数据库及其衍生产品集成,Bytebase 和各种数据库密切合作,而托管 MySQL 和 Postgres 最大的云服务之一 Google Cloud SQL 也是 Bytebase 创始人的杰作之一。

我们对 Postgres 和 MySQL 在以下几个维度进行了比较:

  • 许可证 License
  • 性能 Performance
  • 功能 Features
  • 可扩展性 Extensibility
  • 易用性 Usability
  • 连接模型 Connection Model
  • 生态 Ecosystem
  • 可运维性 Operability

file

除非另有说明,下文基于最新的主要版本 Postgres 15 和 MySQL 8.0 (使用 InnoDB)。在文章中,我们使用 Postgres 而不是 PostgreSQL,尽管 PostgreSQL 才是官方名称,但被认为是一个错误的决定。

file

许可证 License

  • MySQL 社区版采用 GPL 许可证。
  • Postgres 发布在 PostgreSQL 许可下,是一种类似于 BSD 或 MIT 的自由开源许可。

即便 MySQL 采用了 GPL,仍有人担心 MySQL 归 Oracle 所有,这也是为什么 MariaDB 从 MySQL 分叉出来。

性能 Performance

对于大多数工作负载来说,Postgres 和 MySQL 的性能相当,最多只有 30% 的差异。无论选择哪个数据库,如果查询缺少索引,则可能导致 x10 ~ x1000 的降级。
话虽如此,在极端的写入密集型工作负载方面,MySQL 确实比 Postgres 更具优势。可以参考下文了解更多:

除非你的业务达到了 Uber 的规模,否则纯粹的数据库性能不是决定因素。像 Instagram, Notion 这样的公司也能够在超大规模下使用 Postgres。

功能 Features

对象层次结构

MySQL 采用了 4 级结构:

  1. 实例
  2. 数据库
  3. 表
  4. 列

Postgres 采用了 5 级结构:

  • 实例(也称为集群)
  • 数据库
  • 模式 Schema
  • 表
  • 列

ACID 事务

两个数据库都支持 ACID 事务,Postgres 提供更强大的事务支持。

file

安全性

Postgres 和 MySQL 都支持 RBAC。

Postgres 支持开箱即用的附加行级安全 (RLS),而 MySQL 需要创建额外的视图来模拟此行为。

查询优化器

Postgres 的查询优化器更优秀,详情参考此吐槽。

复制

Postgres 的标准复制使用 WAL 进行物理复制。MySQL 的标准复制使用 binlog 进行逻辑复制。

Postgres 也支持通过其发布/订阅模式进行逻辑复制。

JSON

Postgres 和 MySQL 都支持 JSON。 Postgres 支持的功能更多:

  • 更多操作符来访问 JSON 功能。
  • 允许在 JSON 字段上创建索引。

CTE (Common Table Expression)

Postgres 对 CTE 的支持更全面:

  • 在 CTE 内进行 SELECT, UPDATE, INSERT, DELETE 操作
  • 在 CTE 之后进行 SELECT, UPDATE, INSERT, DELETE 操作

MySQL 支持:

  • 在 CTE 内进行 SELECT 操作
  • 在 CTE 之后进行 SELECT, UPDATE, DELETE 操作

窗口函数 (Window Functions)

窗口帧类型:MySQL 仅支持 Row Frame 类型,允许定义由固定数量行组成的帧;而 Postgres 同时支持 Row Frame 和范围帧类型。

范围单位:MySQL 仅支持 UNBOUNDED PRECEDING 和 CURRENT ROW 这两种范围单位;而 Postgres 支持更多范围单位,包括 UNBOUNDED FOLLOWING 和 BETWEEN 等。

性能:一般来说,Postgres 实现的 Window Functions 比 MySQL 实现更高效且性能更好。

高级函数:Postgres 还支持更多高级 Window Functions,例如 LAG(), LEAD(), FIRST_VALUE(), and LAST_VALUE()。

可扩展性 Extensibility

Postgres 支持多种扩展。最出色的是 PostGIS,它为 Postgres 带来了地理空间能力。此外,还有 Foreign Data Wrapper (FDW),支持查询其他数据系统,pg_stat_statements 用于跟踪规划和执行统计信息,pgvector 用于进行 AI 应用的向量搜索。

MySQL 具有可插拔的存储引擎架构,并诞生了 InnoDB。但如今,在 MySQL 中,InnoDB 已成为主导存储引擎,因此可插拔架构只作为 API 边界使用,而不是用于扩展目的。

在认证方面,Postgres 和 MySQL 都支持可插拔认证模块 (PAM)。

易用性 Usability

Postgres 更加严格,而 MySQL 更加宽容:

  • MySQL 允许在使用 GROUP BY 子句的 SELECT 语句中包含非聚合列;而 Postgres 则不允许。
  • MySQL 默认情况下是大小写不敏感的;而 Postgres 默认情况下是大小写敏感的。
  • MySQL 允许 JOIN 来自不同数据库的表;而 Postgres 只能连接单个数据库内部的表,除非使用 FDW 扩展。

连接模型 Connection Model

Postgres 采用在每个连接上生成一个新进程的方式工作。而 MySQL 则在每个连接上生成一个新线程。因此,Postgres 提供了更好的隔离性,例如,一个无效的内存访问错误只会导致单个进程崩溃,而不是整个数据库服务器。另一方面,进程模型消耗更多资源。因此,在部署 Postgres 时建议通过连接池(如 PgBouncer 或 pgcat)代理连接。

生态 Ecosystem

常见的 SQL 工具都能很好地支持 Postgres 和 MySQL。由于 Postgres 的可扩展架构,并且仍被社区拥有,近年来 Postgres 生态系统更加繁荣。对于提供托管数据库服务的应用平台,每个都选择了 Postgres。从早期的 Heroku 到更新的 Supabase, render 和 Fly.io。

可运维性 Operability

由于底层存储引擎设计问题,在高负载下,Postgres 存在臭名昭著的 XID wraparound 问题。

对于 MySQL,在 Google Cloud 运营大规模 MySQL 集群时,我们遇到过一些复制错误。

这些问题只会在极端负载下发生。对于正常工作负载而言,无论是 Postgres 还是 MySQL 都是成熟且可靠的。数据库托管平台也提供集成备份/恢复和监控功能。

Postgres 还是 MySQL

2023 年了,在 Postgres 和 MySQL 之间做选择仍然很困难,并且经常引起激烈讨论。

file

file

总的来说,Postgres 有更多功能、更繁荣的社区和生态;而 MySQL 则更易学习并且拥有庞大的用户群体。
我们观察到与 Stack Overflow 结果相同的行业趋势,即 Postgres 在开发者中变得越来越受欢迎。但根据我们的实际体验,精密的 Postgres 牺牲了一些便利性。如果你对 Postgres 不太熟悉,最好从云服务提供商那里启动一个实例,并运行几个查询来上手。有时候,这些额外好处可能并不值得,选择 MySQL 会更容易一些。

同时,在一个组织内部共存 Postgres 和 MySQL 也是很常见的情况。如果需要同时管理 Postgres 和 MySQL 的开发生命周期,可以来了解一下 Bytebase。

file


💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。

PostgreSQL跨库查询实战:postgres_fdw原理、配置与性能优化 在数据库架构设计中,跨库查询是解决数据分散访问需求的关键技术。其核心原理是通过外部数据包装器(FDW)建立统一的数据访问接口,实现透明化的远程数据操作。这项技术的核心价值在于能够在不迁移数据的前提下,实现多数据源的关联分析与实时查询,极大提升了数据整合的灵活性与开发效率。在PostgreSQL生态中,postgres_fdw作为官方维护的外部数据包装器,通过谓词下推、连接复用等机制,为跨库JOIN、聚合计算等复杂场景提供了稳定支持。无论是微服务架构下的数据聚合,还是分布式系统中的实时报表生成,掌握postg 阅读详情

相关推荐

MySQL 8.0 与 PostgreSQL 16 对比:5大核心差异与选型决策指南

本文深度对比MySQL 8.0与PostgreSQL 16在架构设计、性能优化、高级功能、运维生态和成本模型等五大核心差异,为架构师提供实用的选型决策指南。通过实际案例和性能测试数据,帮助开发者根据业务需求选择最适合的数据库解决方案,提升系统扩展性和效率。

350

全方位对比 Postgres 和 MongoDB (2023 版)

「数据库全方位对比系列」第二篇!

Bytebase的博客 2576

【好物推荐】mysql2postgres 将Mysql的建表脚本转换为PostgreSQL的建表脚本

将Mysql的建表脚本转换为PostgreSQL的建表脚本。

奶爸的编程之路,也就一周冷个三天 1303

MySQL与PostgreSQL对比

MySQL与PostgreSQL对比 2000万计算逻辑 三层情况下:1170 * 1170 * 16 = 21902400,得出两千万左右条数据 PostgreSQL单表最大32T,不限制记录数,但最多能存多少条记录还要看单条记录大小和对查询性能的要求,如果没有复杂的查询或统计操作正常单表上亿条记录查询性能也是能接受的。否则就要考虑分区或分库分表操作。看网上经验值,为保证较好的查询性能,MySQL在单表1000w~2000w数据记录时就要考虑分库分表操作。

话数Science 4403

深入解析6T SRAM的读写机制与性能优化

本文深入解析了6T SRAM的基本结构与核心工作原理,详细阐述了其读写操作的具体时序与机制。文章重点探讨了在先进工艺下面临的读写稳定性、写入能力等性能挑战,并系统介绍了写入辅助与读取辅助等关键优化技术,旨在提升SRAM的可靠性与整体性能。

weixin_29205061的博客 1227

LuaJit分析(十一)去除string.dump函数

因此即使我们的指令顺序被打乱,通过loadfile系统调用,再通过string.dump调用,可以得到字节码文件,再通过与标准的luajit生成的字节码文件比对,即可找出差异所在。Lua脚本中的string.dump函数用于生成字节码文件,根据对 luajit -b命令的分析可以得出,最终dump出字节码文件都是使用的string.dump函数。同时lj_libdef.h和lj_ffdef.h这两个文件都是自动生成的,在msvcbuild.bat中,使用如下命令生成。

a545958498的博客 1133

re:Invent 2023 | 面向现代企业的Postgres

演讲者首先介绍了PostgreSQL的背景信息,其历史可以追溯到37年前,重点在于其可扩展性和对新数据类型的支持。他解释道,这种可扩展性使得PostgreSQL能够适应并无缝处理现代工作负载,例如JSON、地理空间数据和全文搜索,而无需进行重大的重构。PostgreSQL成功的关键因素在于其采用的开源社区模式,这一模式充分利用了来自世界各地的贡献和创意。演讲者将该模式与MySQL和Oracle等受限的专有模式进行了对比。此外,他还提到,Oracle糟糕的客户待遇正促使人们转向使用PostgreSQL。

goandstop25的博客 1562

基础的pdf病毒木马

基础的pdf病毒木马 环境: 攻击机:Kali 目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件) 目标软件:Adobe Reader 8.1.2 msf框架搜索:adobe-pdf 1.打开msfconsole 2.搜索 adobe_pdf模块 3.加载攻击模块并设置payload 4.运行生成pdf 5.将pdf拖入到win10 6.打开msf,加...

小小猪的博客 4624

Star History 十月开源精选 |AI for Postgres

今年我们见证了科技界拥抱人工智能,并在 AI 领域里找到自己的立足之地。幸好 Postgres 足够开放,支持扩展,我们有幸得以享用想这些扩展,可以为我们的 Postgres 添加 AI 功能,而无需迁移到新的数据库。💡 更多资讯,请关注 Bytebase 公号:Bytebase。

Bytebase的博客 749

基于STM32、HAL库的TLV320AIC3204IRHBR音频接口芯片驱动程序设计

* 开启所有数字部分 */#define TLV320AIC3204_REG_LEFT_HEADPHONE_OUT_VOLUME 0x0C /* 左声道耳机输出音量 */#define TLV320AIC3204_REG_DIGITAL_AUDIO_PATH_CONTROL 0x05 /* 数字音频路径控制 */#define TLV320AIC3204_REG_ANALOG_HP_FILTER_CONTROL 0x34 /* 模拟耳机滤波器控制 *//* 最大音量 */

corlin6688的博客 523

基于物联网设计温室水培系统(NBIOT+华为云IOT)_338

本项目设计并实现了一套基于物联网的温室水培系统。系统以STM32F103RCT6单片机为核心控制器,结合SHT30温湿度传感器、SGP30二氧化碳传感器、BH1750光照传感器及液位检测传感器等硬件,实现对温室内环境参数的实时采集。系统支持自动和手动两种控制模式,能够根据传感器数据自动控制补光灯、通风风扇、遮光卷帘、降温水帘及营养液补充电机。通过NBIoT模块,系统可将采集的数据通过MQTT协议上传至华为云IOT平台,用户可通过Android手机APP或Windows上位机进行远程监控与控制。

415

Postgres 凭什么取代 MySQL 成最受欢迎的数据库?

你好,我是 EarlGrey,喜欢翻译点东西,偶尔写写代码。点击下方卡片关注我,一起向上进击,提升自我。后台回复关键词“电子书”,送你一份我收藏的电子书合集。本文来自 Star History 网站的 10 月精选,经 EarlGrey@进击的Grey 翻译后与大家分享。 原文链接为:https://star-history.com/blog/ai-for-postgres在2023年Stack...

codingpy的博客 1072

YOLOv11改进缝合注意力 | 深度优化的BiFormer模型-结合BiLevel Routing Attention与深度可分离卷积的创新应用(附代码)

YOLO(You Only Look Once)系列目标检测算法一直以来都是计算机视觉领域的热门选择。随着YOLOv11的发布,它在许多实际应用场景中取得了显著的性能提升。然而,面对日益复杂的目标检测任务,单纯依赖卷积神经网络(CNN)在某些情况下已经显得力不从心,特别是在处理小尺度、密集目标以及遮挡目标时,卷积操作的局部性限制了模型的表达能力。

一键难忘的博客 721

Postgres介绍(PostgreSQL)(开源对象关系型数据库管理系统)(与Mysql对比)

PostgreSQL 是一个功能强大的开源对象关系型数据库管理系统(ORDBMS),以其可靠性、高性能和丰富的特性而闻名。插件扩展可通过扩展(Extensions)添加新功能,例如:PostGIS:地理空间数据处理。:时序数据优化。cstore_fdw:列存储压缩。支持自定义数据类型、函数、操作符、过程语言(如 Python、JavaScript)等。存储过程:支持多种编程语言(PL/pgSQL、PL/Python、PL/JavaScript 等)编写存储过程。

Dontla的博客 2242

HTML5+CSS3+JS小实例:扇形展开折叠菜单

你肯定见过那种圆形浮动按钮(FAB),点一下弹出几个选项。大部分实现就是菜单项从底下往上"弹"出来,排成一列——能用,但没啥记忆点。后来我看到 Path 那个经典的扇形菜单,点一下,五个按钮像花瓣一样从中心散开,每个带不同的延迟和弹性曲线。当时就觉得:这才对嘛,交互就该有点"戏剧性"。今天拆一个纯手写版本,HTML + CSS + JS,不依赖任何库。六菜单项、扇形 144° 展开、弹性过渡、点击关闭、键盘可达——该有的都有。

艾恩小灰灰的博客 164

【MATLAB】工业传送带速度闭环控制与张力联合仿真

本文基于MATLAB/Simulink平台,构建了工业传送带速度闭环控制与张力联合仿真系统。通过搭建驱动模块、机械传动模块、检测模块和控制模块,实现了速度与张力的协同控制。采用双PID调节器分别整定速度与张力参数,经联合调试后系统性能良好:速度跟踪误差小于±0.03m/s,张力波动控制在±30N内,负载扰动恢复时间仅0.3秒。研究提供了从建模到参数优化的完整工程方案,可直接应用于课程设计或工业实践,有效解决了传送带运行中速度偏差与张力波动的协同控制难题。

unber的博客 80

数据库操作系列-Mysql, Postgres常用sql语句总结

举个栗子: 我想查询users表created_at字段从2023-08-01 00:00:00.000 到2023-08-10 00:00:00.000范围内的数据。在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与。表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;下面的语句有一样的效果,区别在于使用的是 name 字段,而不是约束的名字。使用相同变量,多次执行这段逻辑,我们会发现只创建了一条,所以是成功的~~~

tangdou369098655的博客 1193

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

如何用Supabase Wrappers创建你的第一个Postgres FDW:HelloWorld示例详解

Supabase Wrappers是一个强大的Postgres Foreign Data Wrapper (FDW) 开发框架,用Rust语言编写,让开发者能够轻松构建连接Postgres与外部数据源的桥梁。通过本教程,你将快速掌握使用Supabase Wrappers创建HelloWorld FDW的完整流程,开启Postgres数据集成之旅。 ## 什么是Postgres FDW?为什么选择

gitblog_00910的博客 450

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PostgreSQL、MariaDB和MySQL的异同及应用:企业级数据库选型指南

本文详细比较了三大开源数据库——PostgreSQL、MySQL和MariaDB,从背景发展、架构设计、功能特性到性能优化与高可用性,全面解析各自优势与适用场景,为企业级数据库选型提供了系统且严谨的参考依据。

专注分享编程开发与技术进阶干货! 3088

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

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

re:Invent 2023 | Amazon Amplify 为 Web 和移动应用程序开发人员带来的新功能

视频概述了亚马逊云科技Amplify的新功能,旨在简化全栈应用程序开发过程。第二代Amplify允许开发者通过代码定义后端资源以实现自动化配置,从而提高开发效率。每位开发者的沙盒环境进一步加速了迭代速度。一个全新的用户界面提供了一体化的前后端资源管理。JavaScript库版本6具有更小且优化过的捆绑包大小,同时改进了对TypeScript的支持。如今,Amplify能够托管各种类型的服务器端呈现应用程序,而不仅仅局限于Next.js。通配符子域名技术有助于构建软件即服务(SaaS)应用程序。

goandstop25的博客 1169

PostgreSQL与MySQL技术选型深度对比

关系型数据库作为数据存储的核心组件,其选型直接影响系统性能和开发效率。PostgreSQL和MySQL作为两大主流开源数据库,在架构设计、性能优化和功能特性上各有千秋。从技术原理看,MySQL的线程池模型在高并发场景下表现优异,而PostgreSQL的进程模型更适合复杂查询。工程实践中,MySQL的生态工具链成熟度更高,适合快速迭代的互联网应用;PostgreSQL则在数据分析、JSON处理等高级功能上更具优势。对于物联网高频写入或电商秒杀场景,MySQL的低延迟特性仍是关键考量;而在需要复杂事务或GIS支

weixin_33713503的博客 376

PostgreSQL 2023 Cc大会 主题 你从未听说过的Postgres 性能优化的小点子

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共1450人左右 1 + 2 + 3 + 4) 3群突破 460已关闭自由申请如需加入请提前说明,新人...

sql server的专栏 310

最迟但到的 Star History 2023 年度开源精选!

过去的一年我们见证了科技领域令人惊叹的增长和难以想象的技术照进了现实,一些甚至成为了我们的日常,开源工具在其中起到的推动作用也功不可没。2024 会有什么惊天动地的巨变?💡 更多资讯,请关注 Bytebase 公号:Bytebase。

Bytebase的博客 1120
上一篇: Bytebase VS Yearning
下一篇: Star History 月度开源精选|2023 年 6 月
Bytebase
博客等级 码龄5年 1349粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值