Answers:
披露:我是一名MySQL员工,致力于MySQL Cluster。
我要说的是,MySQL Cluster比分片的MySQL + InnoDB可以实现更高的吞吐量/主机,前提是:
在延迟方面,MySQL Cluster应该比分片的MySQL具有更稳定的延迟。纯内存数据的实际延迟可能相似。
随着查询变得越来越复杂,并且数据存储在磁盘上,性能比较也变得更加混乱。为了获得更具体的答案,您需要描述有关您的应用程序和所执行的查询以及主机数量和数据量的更多信息。MySQL Cluster最近获得了并行的本地化查询执行(AQL),这意味着,尽管数据分布在多个主机上,它仍可以与独立的MySQLD竞争。
MySQL Cluster目前仅限于“分片” 48台主机。从理论上讲,分片MySQL没有限制。但是,对于给定的目标吞吐量,与分片的MySQL主机相比,可能需要更少的MySQL Cluster主机。
当您关注性能以外的领域时,更有趣的区别是:
在应用程序中内置分片可为您提供最大的扩展潜力,但在跨分片查询和操作方面会增加复杂性并限制您的灵活性。如果分片为时过早,那么这可能是您遇到一些问题的根源。MySQL Cluster使您可以获得分片的一些好处,而不必将应用程序限制为仅单分片。
关于先前的答案,一些澄清:
“尽管MySQL Cluster是ACID兼容的,但它没有为带有复合键的数据提供合适的存储引擎。”
MySQL Cluster支持复合主键和辅助键。不知道什么不适合。也许以前的海报可以解释?
“为了将具有相同关键特征的数据存储在一组特定的数据节点中,可以执行以下操作:
- 使所有数据节点脱机,仅保留要保留具有相同关键特征的数据的那些数据节点。
- 将数据加载到MySQL群集中,该群集仅填充您选择的数据节点
- 使所有数据节点重新联机”
这是不正确的。数据分发与任何时间随时在线的节点无关。MySQL Cluster支持各种数据分配方案,以支持您描述的优化。我在这里的博客文章中描述了MySQL Cluster中的数据分发:MySQL Cluster中的数据分发