是时候从 MySQL 转到 PostgreSQL 18 了

news/2025/11/17 17:09:10/文章来源:https://www.cnblogs.com/Zongsoft/p/19233588

是时候从 MySQL 转到 PostgreSQL 18 了

2025-11-17 17:06  Zongsoft  阅读(0)  评论(0)    收藏  举报

是时候从 MySQL 转到 PostgreSQL 18 了

数据库技术革新的浪潮中,PostgreSQL 18 的发布标志着关系型数据库进入了新的时代,它不仅在性能上实现质的飞跃,更为开发者的工作效率带来了巨大提升。

近年来,随着应用复杂度的增加和数据规模的膨胀,许多基于 MySQL 的系统开始触及性能和维护的天花板。而 PostgreSQL 18 的发布,为这些挑战提供了全新的解决方案。

根据 db-engines.com 的趋势数据,PostgreSQL 是四大主流关系型数据库中唯一保持持续上升势头的系统,其受欢迎程度逐年攀升。这一趋势并非偶然,而是源于 PostgreSQL 在开发者友好性、性能、可扩展性以及 AI 趋势适应能力上的全面优势。

PostgreSQL 18 的异步 I/O 革命

PostgreSQL 18 引入了全新的异步 I/O(AIO)子系统,这是数据库性能领域的重大突破。与之前依赖操作系统预读机制的同步 I/O 不同,AIO 允许 PostgreSQL 并发地发出多个 I/O 请求,而不是等待每个请求顺序完成,这在云存储或低成本存储设备场景下的优势尤为明显。

实际测试表明,在顺序扫描、位图堆扫描等读取密集型场景中,性能可提升 2~3 倍。这对于实时读、数据仓库、报表分析等需要处理大量数据的场景尤其重要。

跳跃式扫描终结全表扫描噩梦

多列B树索引的 “最左前缀匹配” 限制,终于在 PostgreSQL 18 被打破了。新引入的跳跃式扫描(Skip Scan)技术,让查询能直接命中非首列的索引条件,彻底改变了此前必须全表扫描的尴尬处境。

举个实际例子,假设有 (a,b,c) 的联合索引,在以前版本中,执行 WHERE b >= 42 这样的查询会直接走全表扫描。而新版本会自动生成动态等式约束,逐个匹配 a 列的可能值并扫描对应 b 列范围,索引读取量最高可减少 90%。

更惊喜的是,非B树唯一索引现在能作为分区键使用,GIN索引也支持并行创建了。

RETURNING 支持获取新旧值

以往更新数据后要对比新旧值,要么写触发器要么查两次表。现在只需在 RETURNING 子句里加上 old.* 和 new.*,譬如:

UPDATE user
SET photo_path = '...'
WHERE user_id = 404
RETURNING old.photo_path, new.photo_path;

这在做数据审计或变更追踪时,这种代码能让你处理性能翻倍,并大幅简化业务层代码逻辑。


开发友好性

在涉及数据删除或更新的业务逻辑中,开发人员常常需要获取数据变动前的原始值,以执行相应的后续操作。一个典型的场景是:删除用户记录时,需要同时清理其关联的头像文件。这就要求在删除数据库记录前,先获取到该头像文件的存储路径。

传统的实现方式通常需要两次独立的数据库操作:先查询获取路径,再执行删除。这不仅增加了代码复杂性,还可能在并发场景下引发数据不一致的问题。

为了解决这一痛点,我们对 Zongsoft 数据引擎进行了改进,通过原生的 RETURNING 子句支持,将 查询原值执行删除 合并为一个原子操作。这显著提升了代码的健壮性与简洁性,具体应用如下:

// 构建删除选项,明确指定需要返回的字段(例如用户的头像路径)
var options = DataDeleteOptions.Return(nameof(User.PhotoPath));// 执行删除操作,此操作会自动生成包含 RETURNING 子句的SQL脚本
// 在删除数据的同时,会将被删除记录的指定字段原始值返回
var count = this.DataAccess.Delete<User>(Condition.Equal(p => p.UserId, 100), // 删除条件:UserId 主键为 100 的用户options //传递删除选项,该选项指定了要返回的字段
);if (count > 0) // 如果成功删除了记录
{// 遍历所有被删除记录(此处为一条)的返回结果集foreach (var entry in options.Returning){// 从返回的原始数据中安全地尝试获取 PhotoPath 字段的值if (entry.TryGetValue<string>(nameof(User.PhotoPath), out var path) && !string.IsNullOrEmpty(path)){// 如果成功获取到非空路径,则执行文件清理等后续业务操作FileSystem.File.TryDelete(path);}}
}

说明

通过一个原子操作替代了传统的 “先查询,后删除” 两步操作,其开发友好性体现在:

  1. 原子性与一致性: 有效避免了在两次独立数据库操作之间,数据状态可能被其他并发操作修改而导致的业务逻辑错误,保证了操作的原子性和数据的一致性。

  2. 代码简洁性与性能: 显著减少了数据库的往返次数,简化了代码逻辑,一次操作即可完成所有任务,提升了执行效率。

  3. 意图清晰与可维护性: 通过声明式的 Return 方法,代码的意图(需要获取被删除数据的某个原始值)一目了然,极大地增强了代码的可读性和可维护性。

丰富的数据类型

PostgreSQL 提供比 MySQL 更加丰富的原生数据类型,包括数组、hstore(键值对)、范围类型(数值范围、日期范围等)以及几何数据类型。

特别是对于地理空间数据,PostgreSQL 的 PostGIS 扩展是开源领域最强大的空间数据库扩展,支持各种几何对象、空间函数和空间索引,远超 MySQL 的空间功能。

完善的 JSON 和 CTE 支持

PostgreSQL 的 JSONB 数据类型提供了比 MySQL 的 JSON 更高效的查询性能和更丰富的查询操作符。JSONB 以二进制格式存储,支持索引,可以大幅提升查询速度。

同时,PostgreSQLCommon Table Expressions (CTE) 的支持更加完善,包括递归 CTE,能够处理复杂的层次化数据查询。重要的是查询、删除、新增、修改语句均支持 CTE,这对编写复杂操作语句提供了提供了简洁高效的方式。

丰富的索引种类

PostgreSQL 提供比 MySQL 更多样化的索引类型,满足不同场景的查询优化需求:

  • B-tree:标准索引,适用于等值查询和范围查询
  • Hash:更快的等值查询,但不支持范围查询
  • GIN(通用倒排索引):适用于多值类型(数组、全文搜索、JSONB)
  • GiST(通用搜索树):适用于几何数据和全文搜索
  • SP-GiST(空间分区通用搜索树):适用于非平衡数据结构
  • BRIN(块范围索引):适用于大型表的范围查询

这些索引类型让开发者可以根据具体业务场景选择最优的索引策略,大幅提升查询性能。

强大的扩展生态系统

PostgreSQL 的扩展生态系统是其最大优势之一。通过安装扩展,可以轻松为数据库添加新功能。

在 AI 时代,pgVector 扩展特别值得关注,它为 PostgreSQL 提供了完整的向量数据库能力,支持各种向量相似度搜索算法(L2 距离、余弦相似度、内积等),可以直接支持 RAG(检索增强生成)应用,无需部署专门的向量数据库。

分库分表的高级支持

对于超大规模数据,PostgreSQL 提供了成熟的分区表功能,支持范围分区、列表分区和哈希分区。与 MySQL 的分区实现相比,PostgreSQL 的分区表功能更加完善和稳定。

此外,Citus 扩展为 PostgreSQL 提供了分布式数据库能力,可以透明地将数据分片分布到多个节点上,实现水平扩展,满足互联网级别的高并发访问需求。

结语:PostgreSQL 18 正当时

随着 PostgreSQL 18 的发布,其在性能、开发者能力和分布式特性上又有显著提升。在 AI 时代,PostgreSQL 凭借 pgVector 等扩展,已成为事实上的标准数据库选择。简而言之,它相对 MySQL 而言具备明显优势:

  • 性能优势:面对海量数据具备更好的性能和更多的优化手段。
  • 可扩展性:丰富的索引类型、强大的分区表和扩展生态系统,满足各种业务场景。
  • 开发效率:更丰富的数据类型、完善的 JSONB 支持、增强的 RETURNING 子句、全面的 CTE 支持,大幅提升开发效率。
  • AI 趋势:pgVector 等扩展为 AI 应用提供原生支持,避免多技术栈复杂性。

无论是新项目还是现有系统迁移,现在都是转向 PostgreSQL 的最佳时机。这一转变将为你带来更强大的数据处理能力、更高效的开发体验和更好的长期可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/968120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序客服系统客服软件--如何接入ttkefu

小程序客服系统客服软件--如何接入ttkefu一、需要具备哪些条件呢 企业主体的微信小程序 配置业务域名(需要配置哪个外部链接,就将链接里的域名配置为业务域名、如:https://w100.ttkefu.com/***.html,就把w100.ttkef…

count函数在oracle中的使用场景有哪些

Oracle中的COUNT函数是一个非常有用的聚合函数,它可以用来计算表中行的数量或者某列非空值的数量。以下是COUNT函数在Oracle中的一些常见使用场景:统计记录数:这是COUNT函数最常见的用途。例如,如果你想统计一个表…

Photoshop下载教程(附2025最新版安装步骤与完整图文讲解)

前言: 很多人觉得 Photoshop 是设计师的专属工具,但实际情况远不止于此。只要掌握正确的安装流程和基础操作,即便是零基础用户,也能轻松使用它完成修图、调色、排版等任务。 本篇文章将为你带来一份2025版 Photosh…

makefile入门3 目标自动生成与模式规则

makefile入门3 目标自动生成与模式规则makefile强大之处是目标可以自动生成,这样面对大型项目时可以通过模式规则(pattern)来制定一类文件的通用规则。 假如现在有一个项目有10个c语言文件,我们可以在bash命令行中先…

2025年不锈钢网带链板制造企业权威推荐榜单:不锈钢平顶链板/ 链板/304不锈钢链板源头厂家精选

不锈钢网带链板作为工业输送系统的核心部件,其市场规模正以每年超过12%的速度增长,其中304不锈钢链板因其优异的耐腐蚀性和强度,占据了60%以上的市场份额。 在食品加工、电子装配、玻璃制造等行业自动化需求不断提升…

算法课 PA2 T1

题目大意 用斐波那契数列表示 \(x\) 指用斐波那契数列的不同项加起来等于 \(x\)。 给出 \(n\le 10^{12}\),问有多少种方法表示 \(n\)。 题解 第一步需要一些数学直觉,就是这种

上海少儿编程哪家靠谱?高性价比机构综合测评,妙小程+4大优质机构,覆盖信奥赛与AI编程

上海少儿编程哪家靠谱?高性价比机构综合测评,妙小程+4大优质机构,覆盖信奥赛与AI编程随着人工智能时代的到来,编程能力已成为青少年核心素养的重要组成部分,上海家长对优质少儿编程机构的需求日益增长。专业的编程…

OpenAI Responses API 的战略意图与技术架构:AI 智能体时代的技术范式变革

2025年3月,OpenAI推出Responses API,标志着AI智能体技术从实验迈向产业化的关键转折。该API采用统一化设计,整合了Chat Completions API的简洁性与Assistants API的工具调用能力,显著降低了构建具备行动能力智能体…

JDK17 ProcessBuilder执行脚本报错 error=13

除了文件自身权限问题之外,还需要对JDK的lib目录下的jspawnhelper进行赋予执行权限,否则也会报错。I had a similar problem and the solution was to chmod +x lib/jspawnhelper in the JRE folder.Share Improve t…

2025年高抗冲阻燃PC/ABS定制厂家权威推荐榜单:低灰分阻燃PC/ABS/ GB4943.1-2022阻燃PC/ABS/5G基站阻燃PC/ABS源头厂家精选

中国改性塑料市场规模已突破2000亿元,其中PC防火改性细分领域年增速达15%以上,高抗冲阻燃PC/ABS作为高端工程塑料的代表,正成为电子电气、汽车新能源等产业升级的关键材料。 在高性能与环保需求双轮驱动下,高抗冲阻…

关于 Visual Studio 类模板、文件权限信息配置

1. 路径 打开vs安装路径 我装在 D:\Microsoft Visual Studio\2026 2. 修改文件 2.1 类模板位置 D:\Microsoft Visual Studio\2026\Professional\Common7\IDE\ItemTemplates\CSharp\Code\2052\Class\Class.cs 2.2 接口模…

从传统架构到AI原生:深度剖析企业AI落地的“三高”痛点与Serverless化解决方案

Serverless AI 原生架构不仅是技术演进,更是企业智能化转型的关键基础设施。它让开发者聚焦业务逻辑,让企业告别“基建焦虑”,让 AI 真正“飞入寻常百姓家”。作者:赵世振本文整理自 2025 云栖大会,阿里云智能集团…

skynet(v1.4.0)学习笔记

skynet(v1.4.0)学习笔记登录流程游戏中一般为了减轻登录服的压力,采用主从登录服务设计 local function login(conf)local name = "." .. (conf.name or "login")skynet.start(function()local l…

网站推荐!夸克资源网站里面的夸克资源社!

要说夸克资源站,最牛逼的当属公众号“资源社驿站" 旗下的“夸父资源社"和“网盘资源社"两个论坛了,可惜,这两个论坛已经一个多月无法打开,能恢复的希望越来越渺茫。那么,有什么替代网站可以选择吗…

iOS 抓包全流程指南,HTTPS 抓包、TCP 数据流分析与多工具协同的方法论

本文从工程角度解析 iOS 抓包流程:代理抓包、tcpdump/Wireshark 底层分析、TLS 握手排查、QUIC 处理,并说明如何在代理失败、pinning 或多协议场景下使用抓包大师(Sniffmaster)按 App/域名过滤并导出 pcap 做逐帧比…

【20章】MCP+A2A 从0到1构建商业级多Agent全栈应用

【20章】MCP+A2A 从0到1构建商业级多Agent全栈应用 学习地址:……/s/1x4nqeqImZvHrD7yVW7en-A 提取码:aa0d 在人工智能的发展历程中,我们正站在一个关键的转折点上。单个AI模型的能力已接近瓶颈,而复杂商业场景的需…

2025北京少儿编程机构实力榜单!妙小程逻辑思维提升/信奥赛冲刺/全年龄段课程可选

2025北京少儿编程机构实力榜单!妙小程逻辑思维提升/信奥赛冲刺/全年龄段课程可选随着人工智能产业的蓬勃发展,编程能力已成为青少年核心素养的重要组成部分,北京地区少儿编程培训需求持续攀升。专业的编程机构能通过…

优化的高光谱解混算法实现

高光谱解混是遥感图像处理中的重要技术,用于从混合像元中提取纯光谱特征(端元)和它们的比例(丰度)。 % 优化的高光谱解混算法 % 包含VCA、FCLS、SUnSAL、CLSUnSAL和基于深度学习的解混方法clear; close all; clc; war…

2025.11.17——1绿2蓝

普及+/提高 P9349 [JOI 2023 Final] 石子排列 2 / Stone Arranging 2 赛时T1 提高+/省选- P6879 [JOI 2020 Final] 集邮比赛 3 / Collecting Stamps 3 赛时T2,区间DP P9737 [COCI 2022/2023 #2] Lampice 赛时T3,很好…

2025年CNBD权威公开:淮安婚纱照拍摄十佳机构专业评测,弥素摄影工作室蝉联冠军宝座

在淮安这座历史文化名城,用镜头记录爱情最美的模样。 根据淮安市摄影行业协会最新数据,2024年淮安婚纱摄影市场规模预计突破1.2亿元,同比增长28%。其中高端定制服务需求增长显著,个性化拍摄套餐占比已达总需求的52…