#### 23.2.6.1 NDB 和 InnoDB 存储引擎之间的区别

[](<>)[](<>)[](<>)[](<>)

这[`新开发银行`](mysql-cluster.html)存储引擎是使用分布式、无共享架构实现的，这导致它的行为不同于[`InnoDB`](innodb-storage-engine.html)以多种方式。对于那些不习惯与之合作的人[`新开发银行`](mysql-cluster.html)，由于其在事务、外键、表限制和其他特征方面的分布式特性，可能会出现意外行为。这些如下表所示：

[](<>)

**表 23.2 InnoDB 和 NDB 存储引擎的区别**

| 特征 | `InnoDB`(MySQL 8.0) | `新开发银行`8.0 |
| --- | ------------------- | ---------- |
| MySQL 服务器版本 | 8.0 | 8.0 |
| [`InnoDB`](innodb-storage-engine.html)版本 | [`InnoDB`](innodb-storage-engine.html)8.0.28 | [`InnoDB`](innodb-storage-engine.html)8.0.28 |
| NDB 集群版本 | 不适用 | [`新开发银行`](mysql-cluster.html)8.0.29/8.0.29 |
| 存储限制 | 64TB | 128TB |
| 外键 | 是的 | 是的 |
| 交易 | 所有标准类型 | [`阅读已提交`](innodb-transaction-isolation-levels.html#isolevel_read-committed) |
| MVCC | 是的 | 不 |
| 数据压缩 | 是的 | 否（可以压缩 NDB 检查点和备份文件） |
| 大行支持 (> 14K) | 支持[`变量`](binary-varbinary.html), [`VARCHAR`](char.html), [`斑点`](blob.html)， 和[`文本`](blob.html)列 | 支持[`斑点`](blob.html)和[`文本`](blob.html)仅列（使用这些类型存储大量数据可能会降低NDB性能） |
| 复制支持 | 使用MySQL复制的异步和半同步复制；MySQL[组复制](group-replication.html) | NDB集群内的自动同步复制；NDB集群之间的异步复制，使用MySQL复制（不支持半同步复制） |
| 读取操作的扩展 | 是（MySQL复制） | 是（NDB集群中的自动分区；NDB集群复制） |
| 写操作的扩展 | 需要应用程序级分区（分片） | 是（NDB集群中的自动分区对应用程序是透明的） |
| 高可用性（HA） | 内置，来自InnoDB集群 | 是（设计用于99.999%的正常运行时间） |
| 节点故障恢复和故障转移 | 从MySQL组复制 | 自动（NDB架构中的关键元素） |
| 节点故障恢复时间 | 30秒或更长时间 | 通常\\\<1秒 |
| 实时性能 | 不 | 对 |
| 内存表 | 不 | 是（一些数据可以选择存储在磁盘上；内存和磁盘数据存储都是持久的） |
| NoSQL访问存储引擎 | 对 | 是（多个API，包括MyCasCH、NoDE.JS/JavaScript、java、JPA、C++和HTTP/REST） |
| 并发和并行写入 | 对 | 最多48个写入程序，针对并发写入进行了优化 |
| 冲突检测和解决（多个来源） | 是（MySQL组复制） | 对 |
| 散列索引 | 不 | 对 |
| 在线添加节点 | 使用MySQL组复制读取/写入副本 | 是（所有节点类型） |
| 在线升级 | 是（使用复制） | 对 |
| 在线模式修改 | 是的，作为MySQL 8.0的一部分 | 对 |
