尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

MySQL存储引擎InnoDB、MyRocks、NDB Cluster和未来架构

MySQL存储引擎InnoDB、MyRocks、NDB Cluster和未来架构
📅 发布时间:2026/7/7 9:50:05

MySQL 的存储引擎是插件化的, MySQL 把 SQL 层和存储层解耦

SQL 解析 → 优化器 → 执行器 ↕ (插件化接口) 存储引擎层 (InnoDB / MyRocks / NDB / ...)

为MySQL表指定不同的存储引擎

CREATE TABLE my_table ( id INT PRIMARY KEY, data VARCHAR(255)) ENGINE=RocksDB;

一、InnoDB

InnoDB 的 B+Tree 架构就不太适合场景

  • 每天数十亿条日志写入,磁盘 IO 成为瓶颈;

  • 冷数据占据 80% 存储空间,成本居高不下;

  • 跨地域高可用集群,要求毫秒级故障切换;

当你的瓶颈明确落在存储层,且InnoDB 的 B+Tree 特性恰好是瓶颈的根源时,才值得考虑替代方案。

二、MyRocks

MyRocks 是 Facebook(现 Meta)开源的 MySQL 存储引擎,底层基于RocksDB——一个用 C++ 编写的嵌入式键值存储库,而 RocksDB 的底层数据结构是LSM-Tree(Log-Structured Merge-Tree)。LSM-Tree与 InnoDB 的 B+Tree 是完全不同的流派。

LSM-Tree 的核心思想是把随机写变成顺序写,InnoDB 使用 B+Tree,数据按主键顺序组织在页中。当发生写入时:·如果目标页不在内存中,需要随机读磁盘加载该页;·修改后,页变为"脏页",由后台刷盘线程随机写回磁盘

LSM-Tree 的思路

写入请求 ↓ MemTable (内存有序结构) ↓ (写满后,顺序刷盘) SST 文件 Level 0 (磁盘,不可变) ↓ (后台 Compaction 合并) SST 文件 Level 1 → Level 2 → ... → Level N

LSM-Tree与 InnoDB 的 B+Tree 的关键差异在于,所有写入先在内存中完成(MemTable),然后以顺序写的方式追加到磁盘上的 SST 文件;·磁盘上的数据分层存储,低层的数据通过后台 Compaction 逐步合并到高层。

MyRocks 的写入性能可以是 InnoDB 的 2~10 倍(具体取决于负载特征),因为它的磁盘 IO 几乎全是顺序的,MyRocks 的另一大杀手锏是存储空间效率.

由于 SST 文件是有序的、不可变的块,可以应用块级压缩算法(Snappy、ZSTD、LZ4 等)。在实际案例中,MyRocks 的数据压缩比通常能达到2:1 到 4:1,而 InnoDB 在默认配置下通常只有 1.5:1 左右的压缩效率。

Facebook 的真实数据:他们将部分 MySQL 实例从 InnoDB 迁移到 MyRocks 后,存储空间减少了50% 以上,同时写入延迟显著降低。对于管理 PB 级数据的团队,这意味着真金白银的成本节省。

没有免费的午餐。LSM-Tree 的代价是:

问题

原因

影响

读放大

一次查询可能需要查找多个 SST 文件

点查询比 InnoDB 慢(尤其无索引时)

写放大

Compaction 过程反复重写数据

持续大量写入时的后台开销

范围查询抖动

Compaction 期间可能阻塞读取

延迟的 P99 不稳定

事务能力

支持 MVCC 但实现不同于 InnoDB

复杂事务场景不如 InnoDB 成熟

MyRocks 场景

强烈推荐:

·高吞吐写入场景(IoT 时序数据、日志存储、用户行为埋点)

·数据量大、压缩需求高的场景(数据归档、冷热分层存储)

·写多读少的业务(写入:读取 > 5:1)

不太适合:

·大量随机点查询的 OLTP 核心业务

·依赖外键、全文索引的场景

·事务逻辑极复杂的金融系统

三、NDB Cluster:需求是高可用

NDB(Network DataBase)是 MySQL Cluster 的核心存储引擎,由 Oracle 维护。它与 InnoDB 和 MyRocks 的设计哲学完全不同——NDB 是一个分布式的、基于内存的、无共享(Shared-Nothing)架构。

内存优先 + 自动分片

NDB 的核心特征:

·数据主存储在内存中(也可配置磁盘持久化),读写延迟极低;

·自动水平分片:数据按主键哈希分布到多个数据节点(Data Node);

·同步复制:每个数据分片有多个副本,事务在所有副本上同步提交;

·无单点故障:管理节点、数据节点、SQL 节点均可冗余部署。

架构示意:

应用层 ↓ SQL 节点 (mysqld) × N ← 无状态,任意扩展 ↓ 数据节点 (ndbd) × M ← 数据分片 + 副本 ↓ (心跳 + 自动故障转移) 管理节点 (ndb_mgmd) ← 集群配置管理

四、五、适用引擎场景

你的场景

推荐引擎

核心原因

通用 OLTP 业务

InnoDB

最成熟、生态最好、没有短板

海量写入 + 存储成本敏感

MyRocks

高写入吞吐 + 高压缩比

电信级高可用 + 低延迟

NDB Cluster

内存架构 + 同步复制

全文检索需求

InnoDB (或上 Elasticsearch)

InnoDB 支持全文索引

时序/日志/埋点

MyRocks (或上 ClickHouse)

LSM-Tree 天然适合追加写

跨地域容灾

NDB 或 Galera

同步复制保证一致性

一个核心原则

InnoDB 不满足需求,在换引擎。

换引擎不是一句ALTER TABLE ... ENGINE=xxx就能搞定的。它涉及:

·功能兼容性验证(索引类型、SQL 语法、事务隔离级别);

·性能基准测试(不是你想象的负载,是你的实际负载);

·运维体系调整(备份恢复、监控告警、扩容策略);

·团队学习成本。

Facebook 从 InnoDB 切 MyRocks 花了数年时间,从内部验证到逐步灰度才完成迁移——这本身就是一个信号:换引擎是战略决策,不是临时优化

Amazon Aurora 和阿里云 PolarDB 已经证明了"存算分离"的可行性:计算节点只处理 SQL 逻辑,数据下沉到共享存储层。这种架构下,传统意义上由"引擎"承担的数据持久化工作被剥离,引擎层变得更轻、更专注于计算优化。

相关新闻

  • RTD1296PB vs RK3568 选型指南:从4大应用场景看22nm Cortex-A55的3项关键优势
  • Agent基础1
  • m4s-converter:打破平台壁垒,让B站缓存视频重获自由播放权

最新新闻

  • eBPF 实时火焰图实战:零侵入定位生产环境 CPU 热点
  • DLSS Swapper终极指南:3分钟学会游戏画质升级的简单方法
  • 2026年最新带亲友提醒功能的日历应用推荐:可以生成个人历的日历 App 怎么选?
  • 矩阵获客第12期线下课:5月22-23日保姆式拆解万级线索引流打法
  • GPT5.5 + 多模型平台搭建个人 AI 工作台:架构设计与实战教程
  • Wand-Enhancer终极指南:免费解锁WeMod高级功能的开源工具

日新闻

  • Android逆向分析全能助手:集成化工具链与自动化工作流设计
  • 面搜索(Faceted Search)原理与工程实践指南
  • 神经网络调参避坑指南:从5个常见Loss曲线形态定位超参数问题

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号