打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
NDB和InnoDB存储引擎比较

文章目录

说明

首先MySQL提供了众多的存储引擎供用户使用,但是支持事务的存储引擎并不多:NDB和InnoDB两个。但是NDB只支持在NDB集群中使用,并不支持在其他场景下使用。下面我们主要讨论它们之间不同的地方,各自的优缺点方便用户根据自己的实际情况进行选项。

注:在NDB集群中,只支持NDB存储引擎的表,其他存储引擎的表将不会被集群化。

NDB和InnoDB的不同点

NDB需要通过一个分布式集群来使用,采用的不共享任何数据、组件的集群,无单点故障。

  • 以MySQL8.0,NDB8.0版本为例:
    而对于MySQL5.7,NDB7.5/7.6版本没有区别,除了数据库版本之外。
特性InnoDB (MySQL 8.0)NDB 8.0
MySQL版本8.08.0
InnoDB版本8.0.158.0.15
NDB集群版本N/A8.0.14/8.0.14
存储限制64TB128TB
外键YesYes
事务所有类型READ COMMITTED
MVCCYesNo
数据压缩YesNo (NDB的检查点和备份文件可以压缩)
大行数据(> 14K)支持 VARBINARY,VARCHAR,BLOB,TEXT只支持 BLOB,TEXT (如果存储非常大的数据,会降低NDB的性能)
支持复制异步和半同步复制; MySQL组复制在NDB集群中自动同步复制;在NDB集群之间使用MySQL复制进行异步复制(不支持半同步复制)
分布式读Yes (MySQL复制)Yes
分布式写需要应用程序级别进行操作Yes
高可用内置,InnoDB集群Yes (99.999%的稳定性)
节点故障恢复、切换MySQL组复制自动化
节点故障恢复时间30秒或更长通常情况小于1秒
实时性能NoYes
内存表NoYes (可以同时存储在磁盘、内存上)
NoSQL访问存储引擎YesYes (多种APIs, 包括:Memcached, Node.js/JavaScript, Java, JPA, C++和HTTP/REST)
并发和并行写入Yes可支持最多48并行写操作, 优化并发写入操作
冲突检测和解决(多主)Yes (MySQL Group Replication)Yes
Hash索引NoYes
在线添加节点组复制中的读、写节点Yes (所有类型的节点)
在线升级Yes (复制)Yes
在线修改YesYes

NDB和InnoDB的性能、负载比较

NDB集群具有一系列独特的属性,这些属性使其非常适合为需要高可用性、快速故障转移、高吞吐量和低延迟的应用程序提供服务。由于其分布式体系结构和多节点实现,NDB集群还具有特定的约束,可能会阻碍一些工作负载的良好执行。关于数据库驱动的应用程序工作负载的一些常见类型,NDB和InnoDB存储引擎在行为上的一些主要差异如下表所示:

负载InnoDBNDB 集群
大容量OLTP应用程序YesYes
DSS应用(数据marts,分析)YesLimited (Join operations across OLTP datasets not exceeding 3TB in size)
自定义应用程序YesYes
打包的应用程序YesLimited (通过主键访问); NDB 8.0集群支持外键
网络电讯应用(HLR, HSS, SDP)NoYes
会话管理和缓存YesYes
电子商务应用程序YesYes
用户档案管理,AAA协议YesYes

NDB和InnoDB特性总结

使用InnoDB主要关心的需求

  • 外键

    注: NDB 集群 8.0支持外键

  • 全表扫描
  • 非常大的数据、行或事物
  • READ COMMITTED以外的事务类型

使用NDB主要关心的需求

  • NDB 集群8.0支持外键
  • 写分离
  • 99.999%的运行可靠性
  • 在线添加节点、在线修改
  • 多个SQL 和NoSQL API
  • 实时性能
  • BLOB列限制使用
  • 支持外键
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MySQL数据库存储引擎
MySQL存储引擎及其面向的数据库应用
MySQL的表类型和存储引擎
MySQL Cluster方案概述
大型电子商务网站架构之--分布式可扩展数据库架构
MySQL Cluster集群探索与实践
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服