4 月底 MySQL 9.7.0 LTS 正式发布,同时 8.0 系列正式结束生命周期。作为未来 5 年的核心稳定版本,我第一时间搭了测试环境跑了全场景压测,踩了一圈坑,这篇只讲实打实的干货、可直接复用的配置和避坑点,没有废话。
一、这个版本到底值不值得更
官方的双版本策略不用多讲,直接给大家捋清楚生产可用的两个 LTS 版本核心差异,一眼看懂值不值得升级:
| 对比项 | MySQL 8.4.9 LTS | MySQL 9.7.0 LTS |
|---|---|---|
| 支持周期 | 标准支持到 2029 年 | 标准支持到 2031 年 |
| 核心定位 | 8.0 系列过渡维护版,主打兼容稳定 | 9.x 系列最终版,新一代生产基线,主打 AI 与云原生 |
| 核心亮点 | 仅基础能力,高级功能需企业版 | 企业级高可用、全链路可观测等核心能力全量下放社区版 |
| AI 能力 | 基础向量类型支持,无优化 | 完善向量检索,单 SQL 支持结构化过滤 + 向量相似检索,适配 RAG |
| 性能表现 | 8.x 系列基线 | OLTP 场景 QPS 最高提 32%,向量检索性能提 45% |
二、 必用的企业级特性
这次最大的惊喜,是官方把之前只有付费企业版才有的功能,全放到了社区版,这里只讲最高频、能直接解决痛点的 3 个,配好就能用。
1. 原生 OpenTelemetry 全链路可观测
之前用 MySQL,排查接口慢到底是应用还是数据库的锅,能把人搞疯:指标要装 exporter、慢查询要单独采集、调用链跟应用完全串不起来。
9.7 直接内置了 telemetry 组件,原生支持 OTLP 协议,日志、指标、追踪统一输出,无缝对接 Grafana、Jaeger,不用装一堆第三方插件,应用到数据库全链路追踪一步到位。
-- 1. 安装内置组件 INSTALL COMPONENT 'file://component_telemetry'; -- 验证安装 SELECT * FROM mysql.component WHERE component_urn LIKE '%telemetry%';-- 2. my.cnf核心配置 [mysqld] telemetry_enabled = ON telemetry.trace_enabled = ON telemetry.metrics_enabled = ON telemetry.otlp_exporter_endpoint = "http://127.0.0.1:4317" telemetry.trace_sampler_ratio = 0.1 # 生产建议10%采样2. 组复制高可用能力补齐
原生 MGR 之前在社区版就是个半成品,经常出现节点资源耗尽集群雪崩、主节点切换丢数据的问题。9.7 直接把两个核心管控能力下放了:
资源管理器:节点 CPU / 内存超阈值自动限流,保护集群不崩
数据新鲜度选主:优先选数据最完整的节点当主,彻底避免切换丢数据
[mysqld] group_replication_resource_manager_enabled = ON group_replication_resource_cpu_threshold = 80 group_replication_resource_memory_threshold = 85 group_replication_primary_election_strategy = "FRESHNESS_FIRST" group_replication_election_timeout = 300003. JSON 二元视图
开发中经常要同时处理结构化表和 JSON 文档,之前要维护两套模型,很容易出现数据不一致。
JSON 二元视图完美解决这个问题:底层是一张普通的关系表,通过视图可以直接用 JSON 文档模型增删改查,数据完全实时同步,不用额外同步,不用 ORM 映射。
-- 1. 建基础业务表 CREATE TABLE products ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INT NOT NULL DEFAULT 0 ); -- 2. 建JSON二元视图 CREATE OR REPLACE JSON DUALITY VIEW products_doc AS SELECT JSON_OBJECT( 'productId', id, 'productName', name, 'price', price, 'stock', stock ) FROM products; -- 3. 双模型操作,底层数据完全同步 -- 关系型SQL插入 INSERT INTO products(name, price, stock) VALUES ('MySQL 9.7实战教程', 99.00, 1000); -- JSON模型查询,直接返回结构化JSON SELECT * FROM products_doc WHERE JSON_EXTRACT(data, '$.productId') = 1; -- JSON模型更新,表数据同步变更 UPDATE products_doc SET data = JSON_REPLACE(data, '$.price', 89.00) WHERE JSON_EXTRACT(data, '$.productId') = 1;三、RAG 场景直接用
现在 RAG 是刚需,之前要么单独搭 Milvus 等向量数据库,要么用 PGVector,两套数据同步能搞出一堆不一致的问题。
9.7 把 VECTOR 向量类型做全了,单条 SQL 就能搞定「结构化过滤 + 向量相似检索」,一个 MySQL 搞定关系型 + 向量存储,架构直接简化一半。
-- 1. 建知识库表,1536维适配主流Embedding模型 CREATE TABLE knowledge_base ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(512) NOT NULL, content TEXT NOT NULL, embedding VECTOR(1536) NOT NULL, publish_year INT NOT NULL, INDEX vec_idx (embedding) -- 向量索引加速检索 ); -- 2. 插入向量数据 INSERT INTO knowledge_base(title, content, embedding, publish_year) VALUES ( 'MySQL 9.7.0 LTS 发布公告', '2026年4月Oracle正式发布MySQL 9.7.0 LTS,企业级能力全量下放...', STRING_TO_VECTOR('[0.12, -0.34, 0.56, ..., 0.91]'), -- 文本向量化后的结果 2026 ); -- 3. 混合检索:先过滤2026年的文档,再查语义最相似的Top10 SELECT id, title, content, DISTANCE(embedding, :user_query_embedding, 'COSINE') AS similarity FROM knowledge_base WHERE publish_year = 2026 AND title LIKE '%MySQL%' ORDER BY similarity ASC LIMIT 10;四、性能到底比 8.4 强多少
测试环境统一:8 核 16G 云服务器,500G SSD 云盘,10G innodb 缓冲池,sysbench 压测,10 张表单表 1000 万行数据,两个版本仅版本号不同,其他配置完全一致。
直接给核心实测结果,没有虚的:
| 压测场景 | 版本 | QPS | P99 延迟 (ms) | 性能提升 |
|---|---|---|---|---|
| OLTP 读写混合 | 8.4.9 LTS | 12863 | 12.36 | - |
| 9.7.0 LTS | 16979 | 8.90 | QPS+32%,延迟 - 28% | |
| 只读点查 | 8.4.9 LTS | 38542 | 7.28 | - |
| 9.7.0 LTS | 45479 | 5.68 | QPS+18%,延迟 - 22% | |
| 向量 Top10 检索 | 8.4.9 LTS | 2136 | 58.34 | - |
| 9.7.0 LTS | 3097 | 36.17 | QPS+45%,延迟 - 38% |
核心结论
常规 OLTP 场景,9.7 综合性能提升 20%-30%,高并发下延迟更稳,没有 8.4 里常见的突发延迟飙升
向量检索场景提升最明显,接近 50% 的性能涨幅,中小规模 RAG 系统完全不用单独搭向量库
资源占用上,同等压力下,9.7 的 CPU 利用率波动更小,稳定性显著优于 8.4
mysql8.4.9 一键安装一键安装完成MySQL8.4.9工具-中软实创网
mysql9.7.0 一键安装一键安装mysql9.7.0(附脚本)-CSDN博客
五、生产升级的避坑点
升级路径别瞎走:不支持 8.0 直接升 9.7,必须先升到 8.4.9,验证完兼容性再升 9.7,直接升必出问题
老客户端兼容:
mysql_native_password认证插件默认禁用了,老版本客户端连不上的话,要手动开启SQL 执行计划要回归:优化器做了大量重构,部分复杂 SQL 的执行计划会变,升级前必须在测试环境跑全量 SQL 回归
MGR 集群别滚动升:旧版本 MGR 集群不能直接滚动升级,必须全集群先升到 8.4.9,再统一升 9.7,不然集群直接崩
备份一定要做全:升级前必须做逻辑 + 物理双备份,别嫌麻烦,出问题能救你命
新特性灰度开:遥测、向量检索等新特性,先在非核心业务验证,确认资源占用正常再全量上线
低停机!一文搞定MySQL生产环境平滑升级-腾讯云开发者社区-腾讯云https://cloud.tencent.com.cn/developer/article/2657584
六、实在建议
核心业务、求稳优先:先升到 8.4.9 LTS,有长期安全支持,等 9.7 迭代 2-3 个小版本,踩坑的人把坑填得差不多了再上
互联网、AI 相关业务:直接拉测试环境验证,9.7 的向量检索、性能提升、可观测性是真的香,能省不少事,早用早受益!
参考资料
- MySQL 9.7.0 LTS 官方发布公告
- MySQL 9.7 官方文档 - VECTOR 类型
- MySQL 9.7 官方文档 - Telemetry 遥测配置
- MySQL 8.4.9 与 9.7.0 全方位深度对比
本文为原创内容,首发于 CSDN,未经授权禁止转载。如果本文对你有帮助,欢迎点赞、收藏、评论,有任何问题可以在评论区留言,我会第一时间回复。