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 = 30000
单主模式
多主模式

3. 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%

核心结论

  1. 常规 OLTP 场景,9.7 综合性能提升 20%-30%,高并发下延迟更稳,没有 8.4 里常见的突发延迟飙升

  2. 向量检索场景提升最明显,接近 50% 的性能涨幅,中小规模 RAG 系统完全不用单独搭向量库

  3. 资源占用上,同等压力下,9.7 的 CPU 利用率波动更小,稳定性显著优于 8.4

mysql8.4.9 一键安装一键安装完成MySQL8.4.9工具-中软实创网
mysql9.7.0 一键安装一键安装mysql9.7.0(附脚本)-CSDN博客

五、生产升级的避坑点

  1. 升级路径别瞎走:不支持 8.0 直接升 9.7,必须先升到 8.4.9,验证完兼容性再升 9.7,直接升必出问题

  2. 老客户端兼容mysql_native_password认证插件默认禁用了,老版本客户端连不上的话,要手动开启

  3. SQL 执行计划要回归:优化器做了大量重构,部分复杂 SQL 的执行计划会变,升级前必须在测试环境跑全量 SQL 回归

  4. MGR 集群别滚动升:旧版本 MGR 集群不能直接滚动升级,必须全集群先升到 8.4.9,再统一升 9.7,不然集群直接崩

  5. 备份一定要做全:升级前必须做逻辑 + 物理双备份,别嫌麻烦,出问题能救你命

  6. 新特性灰度开:遥测、向量检索等新特性,先在非核心业务验证,确认资源占用正常再全量上线

低停机!一文搞定MySQL生产环境平滑升级-腾讯云开发者社区-腾讯云https://cloud.tencent.com.cn/developer/article/2657584

六、实在建议

  • 核心业务、求稳优先:先升到 8.4.9 LTS,有长期安全支持,等 9.7 迭代 2-3 个小版本,踩坑的人把坑填得差不多了再上

  • 互联网、AI 相关业务:直接拉测试环境验证,9.7 的向量检索、性能提升、可观测性是真的香,能省不少事,早用早受益!

参考资料

  1. MySQL 9.7.0 LTS 官方发布公告
  2. MySQL 9.7 官方文档 - VECTOR 类型
  3. MySQL 9.7 官方文档 - Telemetry 遥测配置
  4. MySQL 8.4.9 与 9.7.0 全方位深度对比

本文为原创内容,首发于 CSDN,未经授权禁止转载。如果本文对你有帮助,欢迎点赞、收藏、评论,有任何问题可以在评论区留言,我会第一时间回复。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐