• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 使用InnoDB和NDB群集的MySQL服务器

    MySQL Server在存储引擎中提供了多种选择。由于双方NDBInnoDB可以作为事务的MySQL存储引擎,MySQL服务器的用户有时会感兴趣的NDB集群。他们将其NDB视为InnoDBMySQL 8.0中默认存储引擎的替代或升级。虽然NDBInnoDB有着共同的特点,也有在体系结构和实现的差异,使一些现有的MySQL服务器的应用程序和使用方案可以很好的适用于NDB簇,但不是所有的人。

    在本节中,我们讨论并比较NDBNDB 8.0 InnoDB使用的存储引擎和MySQL 8.0使用的存储引擎的一些特性。接下来的几节提供技术比较。在许多情况下,必须在考虑所有因素的情况下,根据具体情况决定何时何地使用NDB Cluster。尽管为每种可能的使用情况提供详细信息超出了本文档的范围,但我们还尝试针对某些通用类型的应用程序NDB相对于InnoDB后端的相对适用性提供一些非常一般的指导。

    NDB Cluster 8.0使用基于MySQL 8.0 的mysqld,包括对InnoDB 1.1的支持。虽然可以将InnoDB表与NDB群集一起使用,但此类表不是群集的。NDB Cluster 8.0发行版中的程序或库也不能与MySQL Server 8.0一起使用,反之亦然。

    虽然确实可以在NDB群集或MySQL Server(最有可能使用InnoDB存储引擎)上运行某些类型的通用业务应用程序,但是在体系结构和实现方面还是存在一些重要差异。“ NDB和InnoDB存储引擎之间的差异”总结了这些差异。由于差异,某些使用场景显然更适合一个引擎或另一个引擎;请参见“ NDB和InnoDB工作负载”。反过来,这会对更适合用于NDB或的应用程序类型产生影响InnoDB。请参见“ NDB和InnoDB功能使用摘要”,用于比较每种类型在普通类型的数据库应用程序中使用的相对适用性。

    有关NDBMEMORY引擎的相对特征的信息,请参阅何时使用MEMORY或NDB群集。

    有关MySQL存储引擎的更多信息,请参见备用存储引擎。

    NDB和InnoDB存储引擎之间的差异

    NDB存储引擎采用分布式,无共享架构,这会导致它从行为不同的方式实现InnoDB在多种方式。对于那些不习惯使用的人NDB,由于其在事务,外键,表限制和其他特征方面的分布式性质,可能会出现意外行为。下表中显示了这些:

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

    特征InnoDB(MySQL 8.0)NDB 8.0
    MySQL服务器版本8.08.0
    InnoDBInnoDB 8.0.21InnoDB 8.0.21
    NDB群集版本不适用NDB 8.0.20 / 8.0.20
    储存限制64TB128TB
    外键
    交易次数所有标准类型READ COMMITTED
    MVCC没有
    资料压缩否(可以压缩NDB检查点和备份文件)
    大行支持(> 14K)支持VARBINARYVARCHARBLOB,和TEXT仅支持BLOBTEXT列(使用这些类型存储大量数据会降低NDB性能)
    复制支持使用MySQL复制的异步和半同步复制;MySQL 组复制NDB群集内的自动同步复制;使用MySQL复制在NDB群集之间进行异步复制(不支持同步复制)
    读取操作的横向扩展是(MySQL复制)是(NDB群集中的自动分区; NDB群集复制)
    用于写操作的横向扩展需要应用程序级分区(分片)是(NDB群集中的自动分区对应用程序是透明的)
    高可用性(HA)内置,来自InnoDB集群是(旨在实现99.999%的正常运行时间)
    节点故障恢复和故障转移从MySQL组复制自动(NDB体系结构中的关键元素)
    节点故障恢复时间30秒以上通常少于1秒
    实时性能没有
    内存表没有是(某些数据可以有选择地存储在磁盘上;内存和磁盘数据存储都是持久的)
    NoSQL访问存储引擎是(多种API,包括Memcached,Node.js / JavaScript,Java,JPA,C ++和HTTP / REST)
    并发和并行写入多达48位作者,针对并发写入进行了优化
    冲突检测和解决(多个复制主机)是(MySQL组复制)
    哈希索引没有
    在线添加节点使用MySQL组复制读取/写入副本是(所有节点类型)
    在线升级是(使用复制)
    在线模式修改是的,作为MySQL 8.0的一部分

    NDB和InnoDB工作负载

    NDB群集具有一系列独特的属性,因此非常适合为需要高可用性,快速故障转移,高吞吐量和低延迟的应用程序提供服务。由于其分布式体系结构和多节点实施,NDB群集还具有特定的约束,可能会使某些工作负载无法正常运行。下表显示了数据库引擎NDBInnoDB存储引擎在某些常见类型的数据库驱动的应用程序工作负载方面在行为方面的许多主要差异:

    InnoDB和NDB存储引擎(数据驱动的应用程序工作负载的常见类型)之间的区别。

    工作量InnoDBNDB丛集(NDB
    大量OLTP应用
    DSS应用程序(数据集市,分析)受限(跨OLTP数据集的合并操作,大小不超过3TB)
    定制应用
    打包的应用程序受限(应该主要是主键访问);NDB Cluster 8.0支持外键
    网络内电信应用(HLR,HSS,SDP)没有
    会话管理和缓存
    电子商务应用
    用户配置文件管理,AAA协议

    NDB和InnoDB功能使用摘要

    在将应用程序功能要求InnoDB与with 的功能进行比较时NDB,显然其中一些与一个存储引擎比其他存储引擎更兼容。

    下表根据存储引擎列出了受支持的应用程序功能,每种功能通常更适合于这些存储功能。

    根据存储引擎支持的应用程序功能,每种功能通常更适合

    的首选应用程序要求InnoDB的首选应用程序要求NDB
    • 外键

      注意

      NDB Cluster 8.0支持外键

    • 全表扫描
    • 大型数据库,行或事务
    • 以外的交易READ COMMITTED
    • 写缩放
    • 正常运行时间为99.999%
    • 在线添加节点和在线模式操作
    • 多个SQL和NoSQL API(请参阅 NDB群集API:概述和概念)
    • 实时表现
    • 有限使用BLOB色谱柱
    • 支持外键,尽管它们的使用可能会影响高吞吐量下的性能