21.1.6.1 NDB 和 InnoDB 存储引擎之间的差异
NDB存储引擎使用分布式无共享架构实现,这导致它在许多方面与InnoDB有所不同。对于那些不习惯使用NDB的用户,由于其在事务,外键,table 限制和其他 Feature 方面的分布式性质,可能会出现意外行为。下 table 中显示了这些:
table21.1 InnoDB 和 NDB 存储引擎之间的区别
Feature | InnoDB (MySQL 5.7) | NDB 7.5/7.6 |
---|---|---|
* MySQL 服务器版本* | 5.7 | 5.7 |
InnoDB Version | InnoDB 5.7.32 | InnoDB 5.7.32 |
* NDB 群集版本* | N/A | NDB 7.5.20/7.6.16 |
Storage Limits | 64TB | 128 TB(自 NDB 7.5.2 起) |
Foreign Keys | Yes | Yes |
Transactions | 所有标准类型 | READ COMMITTED |
MVCC | Yes | No |
Data Compression | Yes | 否(可以压缩 NDB 检查点和备份文件) |
大行支持(> 14K) | 支持VARBINARY,VARCHAR,BLOB和TEXT列 | 仅支持BLOB和TEXT列(使用这些类型存储大量数据会降低 NDB 性能) |
Replication Support | 使用 MySQL 复制的异步和半同步复制; MySQL Group Replication | NDB 群集内的自动同步复制;使用 MySQL 复制在 NDB 群集之间进行异步复制(不支持同步复制) |
读取操作的横向扩展 | 是(MySQL 复制) | 是(NDB 群集中的自动分区; NDB 群集复制) |
写操作的横向扩展 | 需要应用程序级分区(分片) | 是(NDB 群集中的自动分区对应用程序是透明的) |
高可用性(HA) | 内置,来自 InnoDB 集群 | 是(旨在实现 99.999%正常运行时间) |
节点故障恢复和故障转移 | 从 MySQL 组复制 | 自动(NDB 体系结构中的关键元素) |
节点故障恢复时间 | 30 秒或更长时间 | 通常<1 秒 |
Real-Time Performance | No | Yes |
In-Memory Tables | No | 是(某些数据可以有选择地存储在磁盘上;内存和磁盘数据存储都是持久的) |
* NoSQL 访问存储引擎* | Yes | 是(多种 API,包括 Memcached,Node.js/JavaScript,Java,JPA,C 和 HTTP/REST) |
并行和并行写入 | Yes | 多达 48 位作者,针对并发写入进行了优化 |
冲突检测和解决(多个复制过程) | 是(MySQL 组复制) | Yes |
Hash Indexes | No | Yes |
在线添加节点 | 使用 MySQL 组复制读取/写入副本 | 是(所有节点类型) |
Online Upgrades | 是(使用复制) | Yes |
在线架构修改 | 是的,作为 MySQL 5.7 的一部分 | Yes |