MySQL 新技术系列第一期
📢 MySQL 新技术系列开篇语
各位数据库同行、开发者朋友们,大家好!
欢迎来到「MySQL 新技术」系列的第一期。在接下来的系列中,我将持续为大家追踪、解读 MySQL 社区的最新动态,深入剖析从核心引擎到生态工具的每一项关键技术演进,希望能为你的日常运维与架构选型提供有力参考。
作为本系列的开篇,第一期的主题是 「告别 MySQL 8.0 时代,全景解读 MySQL 9.x 创新版」。之所以以此开篇,是因为 2026 年 4 月,MySQL 8.0 正式结束生命周期(EOL),与此同时,9.7.0 LTS 正式确立为下一代长期支持版。这是一个时代的交接与新生。本文将从版本策略出发,系统梳理从 9.0 到 9.7 的全景新特性,帮助大家厘清技术脉络,把握升级方向。
一、开篇综述:MySQL 版本策略与路线图
1.1 创新版 vs 长期支持版(LTS)
在开启 9.x 系列介绍之前,有必要回顾一下 MySQL 自 2023 年启用的双轨制版本策略:
| 版本类型 | 定位 | 生命周期 | 适用场景 |
|---|---|---|---|
| 创新版(Innovation Release) | 快速迭代,抢先体验新功能 | 约 3–6 个月 | 开发测试环境、希望尽早使用新特性的用户 |
| 长期支持版(LTS) | 稳定优先,兼容性保障 | 标准支持至 2029 年 4 月,扩展支持至 2032 年 | 生产环境核心系统 |
简单来说,创新版是 MySQL 的「前沿试验场」,每季度左右发布一个新版本,将最新功能快速交付给社区;LTS 版则是「生产压舱石」,每两年左右从创新版分支中选取一个稳定基线,提供长达数年的长期维护。
1.2 重要里程碑时间线
| 时间 | 事件 |
|---|---|
| 2024 年 7 月 | MySQL 9.0.0 创新版发布(后因严重 bug 撤回,由 9.0.1 替代) |
| 2024 年 10 月 | MySQL 9.1.0 创新版发布 |
| 2025 年 1 月 | MySQL 9.2.0 创新版发布 |
| 2025 年 4 月 | MySQL 9.3.0 创新版发布 |
| 2026 年 4 月 | MySQL 8.0 正式 EOL;9.7.0 LTS GA |
1.3 为什么要告别 8.0?
MySQL 8.0 于 2018 年 4 月正式 GA,至今已走过整整八个年头。作为 MySQL 历史上最成功的大版本,它带来了窗口函数、CTE、InnoDB 集群、JSON 全面增强等变革性功能。但从 2026 年 5 月 1 日起,8.0 已不再获得任何新的安全补丁和 bug 修复,继续运行意味着安全风险持续累积,尤其对于金融、电信、政务等强合规行业而言,这是一个必须严肃对待的风险信号。因此,尽早规划向 9.x LTS 的升级,是当下每个 DBA 和架构师需要提上日程的重要课题。
二、核心新特性全景概览
从 9.0 到 9.3 创新版,再到 9.7 LTS,MySQL 在多个维度实现了重大突破:
| 特性领域 | 关键创新 | 首发版本 |
|---|---|---|
| 🤖 AI 与向量 | VECTOR 数据类型、向量检索、RAG 支持 | 9.0 / 8.4 |
| 📝 JavaScript 支持 | MLE 多语言引擎、存储程序、LIBRARY 模块化 | 9.0 → 持续演进 |
| 🚀 性能与可观测性 | 触发器延迟加载、EXPLAIN 增强、Hypergraph Optimizer | 9.1 → 9.7 |
| 🛡️ 高可用性 | Primary Election 组件、自动驱逐与重加入、OpenTelemetry 集成 | 9.3 → 9.7 |
| 🔒 安全增强 | OpenID Connect、原子 DDL、Dynamic Data Masking | 9.1 → 9.7 |
| 📦 社区版扩展 | JSON Duality Views、Profile-Guided Optimization 等 8 大能力 | 9.7 LTS |
三、🤖 AI 与向量支持(Vector Support)
3.1 VECTOR 数据类型(9.0 / 8.4 LTS)
随着大模型和 RAG 技术的普及,向量检索已从小众需求跃升为通用能力。MySQL 9.0 引入了原生的 VECTOR 数据类型,使开发者能够在 MySQL 中直接存储和操作向量嵌入,无需额外部署独立的向量数据库。
核心参数:
- 每个条目为 4 字节浮点数
- 默认最大长度为 2048,绝对上限为 16383
相关函数:
| 函数 | 说明 |
|---|---|
VECTOR_DIM() |
返回向量的维度 |
STRING_TO_VECTOR() / TO_VECTOR() |
将字符串格式转换为二进制向量 |
VECTOR_TO_STRING() / FROM_VECTOR() |
将二进制向量转换为字符串格式 |
实用场景: 用户可在单条 SQL 中同时完成结构化条件过滤与向量相似性检索,例如「查询 2024 年发布的、与‘MySQL 向量检索’语义相似的技术文档」。
⚠️ DBA 提醒:9.0 的 VECTOR 是第一代实现,存在显著限制——不能用作键(KEY),且函数兼容性有限。其检索性能尚无法与专用向量数据库(如 Milvus)匹敌,更适合中小规模的 AI 场景。
3.2 HNSW 向量索引(8.4 LTS)
MySQL 8.4 LTS 在 VECTOR 类型的基础上,进一步引入了 HNSW(Hierarchical Navigable Small World)向量索引,大幅提升了大规模向量数据的检索效率。
3.3 GenAI 与 RAG 支持(HeatWave)
在 MySQL HeatWave 中,官方提供了更完整的 AI 能力:
- 向量存储:自动解析 PDF、PPT、TXT、HTML、DOC 等格式文件,生成向量嵌入并存入 VECTOR 类型列。
- AI 引擎加速:通过
ALTER TABLE ... SECONDARY_LOAD将向量表卸载至 MySQL AI 引擎,实现查询加速。 - 内置 RAG:
ML_RAG例程支持检索增强生成,结合私有数据与大模型,生成更精准的回答。
四、📝 JavaScript 支持与多语言引擎(MLE)
如果说 VECTOR 是 MySQL 在 AI 数据层面的革新,那么 JavaScript 支持则是其在开发范式层面的革命性突破。
4.1 JavaScript 存储程序(9.0)
MySQL 9.0 首次将 JavaScript 引入数据库内核,允许开发者使用 JavaScript 编写存储过程和存储函数。JavaScript 存储函数可在 SQL 表达式的任意位置调用,包括 WHERE、HAVING、ORDER BY 等子句。这意味着前端开发者可以将现有的 JavaScript 技能直接应用到数据库逻辑中,降低学习成本,提升开发效率。
4.2 LIBRARY 模块化(9.0 → 9.2 → 9.3)
随着项目规模增长,代码复用成为刚需。MySQL 9.0 引入了 LIBRARY 对象,允许开发者将 JavaScript 和 WebAssembly 代码封装成可复用的库模块,通过 CREATE LIBRARY DDL 声明,并在存储程序中使用 USING 子句导入。
演进时间线:
| 版本 | JavaScript 能力演进 |
|---|---|
| 9.0 | 基础 JavaScript 存储程序、LIBRARY 初步支持 |
| 9.1 | 支持 JavaScript 程序使用 VECTOR 类型 |
| 9.2 | 事务 API(START TRANSACTION / COMMIT / ROLLBACK);ENUM/SET 类型识别;MySQL 内置函数调用 |
| 9.3 | await 动态加载库;ALTER LIBRARY / SHOW LIBRARY STATUS;DECIMAL 类型支持;国际化 API |
💡 应用价值:LIBRARY 对象将代码缓存一次、多处复用,避免内存膨胀。同时,开发者可直接复用 npm 上的海量开源 ECMAScript 模块(ESM),将前端生态的丰富资源带入数据库层。
4.3 MLE 组件(企业版)
MLE(多语言引擎组件)是 MySQL 企业版中驱动 JavaScript 支持的核心组件,负责 JavaScript 代码的解析、执行和与 MySQL 内核的交互。在 9.2 版本中,MLE 支持 JavaScript 例程通过 getFunction() 和 getProcedure() 方法调用 MySQL 存储函数和过程,并可通过全局 Session 对象访问会话变量。
五、🚀 性能与可观测性增强
5.1 触发器延迟加载(9.1)
在 9.1 之前的版本中,每次访问带有触发器的表时,触发器都会被完整加载和解析,即使只是执行只读的 SELECT 操作,造成了大量不必要的资源消耗。
9.1 的优化方案: 将触发器处理拆分为两个阶段——
- 阶段一:仅读取触发器元数据,存入全局缓存,供所有会话共享
- 阶段二:仅在真正执行数据修改操作时,才进行完整解析和执行
新增的系统变量 table_open_cache_triggers 以及状态变量 Table_open_cache_triggers_hits / misses,为管理员提供了清晰的缓存监控能力。
5.2 EXPLAIN 与优化器增强(9.1 → 9.3)
| 版本 | 增强内容 |
|---|---|
| 9.1 | EXPLAIN 输出包含多范围读取信息、半连接策略描述;支持 GROUP BY ROLLUP (col1, col2) 语法 |
| 9.2 | EXPLAIN FORMAT=JSON 引入版本信息字段 |
| 9.3 | 扩展对量化比较谓词转换的支持,提升复杂查询效率 |
5.3 查询优化器与可观测性(9.7 LTS)
9.7 LTS 引入了多项重量级性能增强:
- Hypergraph Optimizer:新一代查询优化器,对复杂连接查询的优化能力显著提升
- Profile-Guided Optimization(PGO):基于实际运行负载的编译优化技术
- OpenTelemetry 集成:支持通过 OTLP 协议导出日志、指标和链路追踪数据,与 Prometheus、Jaeger 等现代可观测性体系无缝对接
六、🛡️ 高可用性改进
6.1 原子 DDL(9.1)
9.1 版本实现了 CREATE DATABASE 和 DROP DATABASE 操作的原子性与崩溃安全。在执行过程中若发生意外服务崩溃,系统会自动回滚,确保数据的完整性和一致性。
6.2 Group Replication 主节点选举(9.3 → 9.7)
9.3 引入了 Primary Election 组件,在故障转移时能够精准选择数据最新的次级服务器作为主节点,有效减少数据不一致和停机时间。
9.7 LTS 进一步增强了集群韧性:
- Up-to-date Aware Primary Election:优先选择数据最新的节点进行主节点选举
- Automatic Eviction & Rejoin:自动检测不健康成员并驱逐,待条件恢复后自动重加入集群
6.3 复制监控增强
9.1 在 Performance Schema 中新增了 Replication Applier Metrics 表,用于监控应用线程进度和工作线程活动。9.7 进一步将流量控制监控和多线程应用线程扩展统计纳入社区版。
七、🔒 安全增强
| 版本 | 安全特性 |
|---|---|
| 9.1 | OpenID Connect 支持;AES ECB 模式移除;OpenSSL 升级至 3.0.15;Option Tracker 组件 |
| 9.2 | CREATE_SPATIAL_REFERENCE_SYSTEM 权限细化 |
| 9.3 | mysqldump 支持 --users、--add-drop-user、--include-user / --exclude-user 逻辑备份用户账户 |
| 9.7 LTS | Dynamic Data Masking(企业版):动态数据脱敏能力 |
八、📦 社区版能力扩展(9.7 LTS)
9.7 LTS 最大的亮点之一,是将原本仅限企业版的 8 大能力开放至社区版,涵盖四大技术领域:
| 技术领域 | 开放能力 |
|---|---|
| 复制与高可用 | 流量控制监控、多线程应用线程扩展统计、自动驱逐与重加入、Up-to-date Aware 主节点选举 |
| 可观测性 | OpenTelemetry 集成(日志、指标、链路追踪) |
| 现代应用开发 | JSON Duality Views(支持 DML 操作) |
| 查询优化 | Hypergraph Optimizer、Profile-Guided Optimization |
九、⚠️ 弃用与移除
| 版本 | 弃用/移除内容 |
|---|---|
| 9.0 | 非事务性表、不可组合的存储功能 |
| 9.2 | SUPER 权限用于空间参考系统操作 |
| 9.3 | Version Tokens 插件完全移除;replica_parallel_workers 最小值强制为 1 |
十、📌 升级指南与建议
10.1 当前版本选择建议
| 用户类型 | 推荐版本 | 理由 |
|---|---|---|
| 生产环境核心系统 | 8.4 LTS(标准支持至 2029 年) | 稳定性优先,经过充分验证 |
| 新项目启动 / 追求前沿 | 9.7 LTS | 最新 LTS,包含 9.x 系列所有创新精华 |
| 开发测试环境 | 最新创新版(如 9.7+) | 抢先体验新特性,为生产升级积累经验 |
10.2 从 8.0 升级的注意事项
- 安全风险:8.0 自 2026 年 5 月 1 日起已不再获得安全补丁,建议尽快规划升级
- 认证插件:默认认证插件已从
mysql_native_password切换为caching_sha2_password,需检查客户端兼容性 - SQL 模式变化:部分隐式默认值行为已调整,建议充分测试
- 功能验证:VECTOR 等新功能有性能局限,评估是否满足业务需求后再决定使用
10.3 功能启用时机建议
| 功能 | 建议启用时机 |
|---|---|
| VECTOR + JavaScript | 可立即在 9.7 LTS 生产环境启用 |
| HNSW 向量索引 | 数据量 >10 万条时建议启用 |
| Hypergraph Optimizer | 复杂连接查询场景优先启用 |
| 动态库加载 | 代码复用需求强烈时启用 |
十一、🔮 总结与展望
回顾 MySQL 9.x 系列的发展历程,我们可以看到一条清晰的演进主线:从传统关系型数据库向「AI-Ready、开发者友好、可观测」的现代数据平台转型。
- AI 层面:VECTOR 数据类型和向量检索能力,使 MySQL 能够原生支撑 RAG、语义搜索等 AI 应用场景,避免了「关系数据库 + 向量数据库」的双库架构复杂性。
- 开发层面:JavaScript 支持和 LIBRARY 模块化,极大降低了数据库逻辑的开发门槛,让超过 1700 万的 JavaScript 开发者能够将自己的技能应用到数据库端。
- 运维层面:原子 DDL、智能主节点选举、OpenTelemetry 可观测性集成,显著提升了数据库的可靠性和可管理性。
随着 8.0 时代的正式谢幕,9.7 LTS 已经接过了长期支持的接力棒,并带来了企业级能力向社区版的大规模开放。可以说,当前正是规划升级、拥抱 MySQL 新一代技术栈的最佳时机。
下一期预告:我们将聚焦 「MySQL 9.x 中的 AI 实战:从向量存储到 RAG 应用」,手把手带你搭建一个基于 MySQL 原生向量检索的智能问答系统。敬请期待!
欢迎大家在评论区留言交流,告诉我你最想深入了解的主题,我会在后续系列中优先安排!
📚 参考资料
- MySQL 9.0 Reference Manual
- MySQL 9.1 Reference Manual & Release Notes
- MySQL 9.2 Release Notes & Blog
- MySQL 9.3 Reference Manual & Release Notes
- MySQL 9.7.0 LTS Announcement Blog (Oracle)
- Bytebase: What's New in MySQL 9 - a DBA's Perspective
- Oracle Blog: Modular Magic with LIBRARY Feature
- Tencent Cloud: MySQL 向量检索深度解析
- Versionlog: MySQL Release History
- 墨天轮: MySQL 8.0 EOL 与 9.7 LTS 发布深度解读
浙公网安备 33010602011771号