一、NDB和InnoDB存储引擎之间的差异
Feature | InnoDB (MySQL 8.0) | NDB 8.0 |
---|---|---|
MySQL Server 版本 | 8.0 | 8.0 |
InnoDB 版本 | InnoDB 8.0.23 | InnoDB 8.0.23 |
NDB Cluster 版本 | N/A | NDB8.0.22/8.0.22 |
存储限制 | 64TB | 128TB |
外键 | Yes | Yes |
事务 | All standard types | READ COMMITTED |
MVCC | Yes | No |
数据压缩 | Yes | No (NDB检查点和备份文件可以压缩) |
宽行支持 (> 14K) | 支持 VARBINARY,VARCHAR,BLOB,TEXT | 支持BLOB,TEXT (使用这些类型存储大量数据会降低NDB性能) |
复制支持 | MySQL复制的异步和半同步复制;MySQL组复制 | NDB群集中的自动同步复制;NDB群集中的异步复制,使用MySQL复制(不支持半同步复制) |
读操作的扩展 | Yes (MySQL组复制) | 是(NDB群集中的自动分区;NDB群集复制) |
写操作的扩展 | 需要应用程序级分区(分片) | 是(NDB集群中的自动分区对应用程序是透明的) |
高可用 | InnoDB cluster | Yes (99.999%(连续运行1年时间里最多可能的业务中断时间是5.26分钟)) |
节点故障恢复和故障转移 | MySQL组复制 | 自动(NDB架构中的关键元素) |
节点故障恢复时间 | 30 s或更长 | 通常 < 1 s |
实时性能 | No | Yes |
内存表 | No | Yes (有些数据可以选择存储在磁盘上;内存和磁盘数据存储都是持久的) |
NoSQL访问存储引擎 | Yes | Yes (多个API,包括Memcached,Node.js/JavaScript,java,jPA,C++,http/REST) |
并发和并行写入 | Yes | 最多48个写入程序,针对并发写入进行了优化 |
冲突检测和解决(多源) | Yes (MySQL 组复制) | Yes |
hash索引 | No | Yes |
在线添加节点 | 使用MySQL组复制的读/写副本 | Yes (所有节点类型) |
在线升级 | Yes (使用复制) | Yes |
联机架构修改 | Yes, MySQL 8.0的一部分 | Yes |
二、NDB和InnoDB场景对比
Workload | InnoDB | NDB Cluster |
---|---|---|
大容量OLTP应用 | Yes | Yes |
DSS应用程序(数据报表、分析) | Yes | 有限 (跨OLTP数据集的联接操作大小不超过3TB) |
自定义应用程序 | Yes | Yes |
打包应用程序 | Yes | 有限(应该主要是主键访问);NDB Cluster 8.0支持外键 |
网络电信应用(HLR、HSS、SDP) | No | Yes |
会话管理和缓存 | Yes | Yes |
电子商务应用 | Yes | Yes |
用户配置文件管理,AAA协议 | Yes | Yes |